Help us shape the future of Go! Take the 2026 Go Developer Survey

detectcoll

package module
v0.0.0-...-690b446 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 6, 2017 License: MIT Imports: 3 Imported by: 0

README

DetectColl

This is an implementation of Marc Stevens' Counter Cryptanalysis in Go

It implements the hash.Hash interface, as well as a new detectcoll.Hash interface, which adds the method:

hashBytes, ok := h.DetectSum(appendTo)

You can also import github.com/therealmik/detectcoll/sha1 and github.com/therealmik/detectcoll/md5 to register the hashes with the crypto subsystem, and they'll log with the golang log package if a collision attempt is detected.

There is a C version written by Marc Stevens and plenty of great hash breaking resources at his website.

To install:

go get -u github.com/therealmik/detectcoll
go get -u github.com/therealmik/detectcoll/...

Documentation

Index

Constants

This section is empty.

Variables

View Source
var MD5_DELTA []md5_delta = []md5_delta{
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
	md5_delta{/* contains filtered or unexported fields */},
}
View Source
var SHA1_COMPLETE_DV []Sha1_dv = []Sha1_dv{
	Sha1_dv{Type: 1, K: 42, B: 0},
	Sha1_dv{Type: 1, K: 43, B: 0},
	Sha1_dv{Type: 1, K: 44, B: 0},
	Sha1_dv{Type: 1, K: 45, B: 0},
	Sha1_dv{Type: 1, K: 46, B: 0},
	Sha1_dv{Type: 1, K: 47, B: 0},
	Sha1_dv{Type: 1, K: 48, B: 0},
	Sha1_dv{Type: 1, K: 49, B: 0},
	Sha1_dv{Type: 1, K: 50, B: 0},
	Sha1_dv{Type: 1, K: 51, B: 0},
	Sha1_dv{Type: 1, K: 52, B: 0},
	Sha1_dv{Type: 1, K: 53, B: 0},
	Sha1_dv{Type: 1, K: 54, B: 0},
	Sha1_dv{Type: 1, K: 55, B: 0},
	Sha1_dv{Type: 1, K: 56, B: 0},
	Sha1_dv{Type: 1, K: 42, B: 2},
	Sha1_dv{Type: 1, K: 43, B: 2},
	Sha1_dv{Type: 1, K: 44, B: 2},
	Sha1_dv{Type: 1, K: 45, B: 2},
	Sha1_dv{Type: 1, K: 46, B: 2},
	Sha1_dv{Type: 1, K: 47, B: 2},
	Sha1_dv{Type: 1, K: 48, B: 2},
	Sha1_dv{Type: 1, K: 49, B: 2},
	Sha1_dv{Type: 1, K: 50, B: 2},
	Sha1_dv{Type: 1, K: 51, B: 2},
	Sha1_dv{Type: 1, K: 52, B: 2},
	Sha1_dv{Type: 1, K: 53, B: 2},
	Sha1_dv{Type: 1, K: 54, B: 2},
	Sha1_dv{Type: 1, K: 55, B: 2},
	Sha1_dv{Type: 1, K: 56, B: 2},
	Sha1_dv{Type: 2, K: 44, B: 0},
	Sha1_dv{Type: 2, K: 45, B: 0},
	Sha1_dv{Type: 2, K: 46, B: 0},
	Sha1_dv{Type: 2, K: 47, B: 0},
	Sha1_dv{Type: 2, K: 48, B: 0},
	Sha1_dv{Type: 2, K: 49, B: 0},
	Sha1_dv{Type: 2, K: 50, B: 0},
	Sha1_dv{Type: 2, K: 51, B: 0},
	Sha1_dv{Type: 2, K: 52, B: 0},
	Sha1_dv{Type: 2, K: 53, B: 0},
	Sha1_dv{Type: 2, K: 54, B: 0},
	Sha1_dv{Type: 2, K: 55, B: 0},
	Sha1_dv{Type: 2, K: 56, B: 0},
	Sha1_dv{Type: 2, K: 45, B: 2},
	Sha1_dv{Type: 2, K: 46, B: 2},
	Sha1_dv{Type: 2, K: 47, B: 2},
	Sha1_dv{Type: 2, K: 48, B: 2},
	Sha1_dv{Type: 2, K: 49, B: 2},
	Sha1_dv{Type: 2, K: 50, B: 2},
	Sha1_dv{Type: 2, K: 51, B: 2},
	Sha1_dv{Type: 2, K: 52, B: 2},
	Sha1_dv{Type: 2, K: 53, B: 2},
	Sha1_dv{Type: 2, K: 54, B: 2},
	Sha1_dv{Type: 2, K: 55, B: 2},
	Sha1_dv{Type: 2, K: 56, B: 2},
}
View Source
var SHA1_STANDARD_DV []Sha1_dv = []Sha1_dv{
	Sha1_dv{Type: 1, K: 46, B: 0},
	Sha1_dv{Type: 1, K: 47, B: 0},
	Sha1_dv{Type: 1, K: 48, B: 0},
	Sha1_dv{Type: 1, K: 49, B: 0},
	Sha1_dv{Type: 1, K: 50, B: 0},
	Sha1_dv{Type: 1, K: 51, B: 0},
	Sha1_dv{Type: 1, K: 48, B: 2},
	Sha1_dv{Type: 1, K: 49, B: 2},
	Sha1_dv{Type: 1, K: 50, B: 2},
	Sha1_dv{Type: 2, K: 45, B: 0},
	Sha1_dv{Type: 2, K: 46, B: 0},
	Sha1_dv{Type: 2, K: 47, B: 0},
	Sha1_dv{Type: 2, K: 48, B: 0},
	Sha1_dv{Type: 2, K: 49, B: 0},
	Sha1_dv{Type: 2, K: 50, B: 0},
	Sha1_dv{Type: 2, K: 51, B: 0},
	Sha1_dv{Type: 2, K: 52, B: 0},
	Sha1_dv{Type: 2, K: 53, B: 0},
	Sha1_dv{Type: 2, K: 54, B: 0},
	Sha1_dv{Type: 2, K: 56, B: 0},
	Sha1_dv{Type: 2, K: 57, B: 0},
	Sha1_dv{Type: 2, K: 58, B: 0},
}

Functions

This section is empty.

Types

type Hash

type Hash interface {
	hash.Hash
	DetectSum([]byte) ([]byte, bool)
}

type MD5

type MD5 struct {
	// contains filtered or unexported fields
}

func NewMD5

func NewMD5() *MD5

func (*MD5) BlockSize

func (s *MD5) BlockSize() int

func (*MD5) DetectSum

func (s *MD5) DetectSum(ret []byte) ([]byte, bool)

func (*MD5) Reset

func (s *MD5) Reset()

func (*MD5) Size

func (s *MD5) Size() int

func (*MD5) Sum

func (s *MD5) Sum(ret []byte) []byte

func (*MD5) Write

func (s *MD5) Write(b []byte) (n int, err error)

type SHA1

type SHA1 struct {
	// contains filtered or unexported fields
}

func NewSHA1

func NewSHA1() *SHA1

func NewSHA1Thorough

func NewSHA1Thorough() *SHA1

func (*SHA1) BlockSize

func (s *SHA1) BlockSize() int

func (*SHA1) DetectSum

func (s *SHA1) DetectSum(ret []byte) ([]byte, bool)

func (*SHA1) Reset

func (s *SHA1) Reset()

func (*SHA1) Size

func (s *SHA1) Size() int

func (*SHA1) Sum

func (s *SHA1) Sum(ret []byte) []byte

func (*SHA1) Write

func (s *SHA1) Write(b []byte) (n int, err error)

type Sha1_dv

type Sha1_dv struct {
	Type int
	K    int
	B    uint
	// contains filtered or unexported fields
}

func (*Sha1_dv) String

func (dv *Sha1_dv) String() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL