// Checksum returns the checksum of some data, using a specified algorithm. // It only returns an error when an invalid algorithm is used. The valid ones // are MD5, SHA1, SHA224, SHA256, SHA384, SHA512, SHA3224, SHA3256, SHA3384, // and SHA3512. func Checksum(algorithm string, data []byte) (checksum string, err error) { // default var hasher hash.Hash switch strings.ToUpper(algorithm) { case "MD5": hasher = md5.New() case "SHA1": hasher = sha1.New() case "SHA224": hasher = sha256.New224() case "SHA256": hasher = sha256.New() case "SHA384": hasher = sha512.New384() case "SHA512": hasher = sha512.New() case "SHA3224": hasher = sha3.New224() case "SHA3256": hasher = sha3.New256() case "SHA3384": hasher = sha3.New384() case "SHA3512": hasher = sha3.New512() default: msg := "Invalid algorithm parameter passed go Checksum: %s" return checksum, fmt.Errorf(msg, algorithm) } hasher.Write(data) str := hex.EncodeToString(hasher.Sum(nil)) return str, nil }
func makeHash(name string) hash.Hash { switch strings.ToLower(name) { case "ripemd160": return ripemd160.New() case "md4": return md4.New() case "md5": return md5.New() case "sha1": return sha1.New() case "sha256": return sha256.New() case "sha384": return sha512.New384() case "sha3-224": return sha3.New224() case "sha3-256": return sha3.New256() case "sha3-384": return sha3.New384() case "sha3-512": return sha3.New512() case "sha512": return sha512.New() case "sha512-224": return sha512.New512_224() case "sha512-256": return sha512.New512_256() case "crc32-ieee": return crc32.NewIEEE() case "crc64-iso": return crc64.New(crc64.MakeTable(crc64.ISO)) case "crc64-ecma": return crc64.New(crc64.MakeTable(crc64.ECMA)) case "adler32": return adler32.New() case "fnv32": return fnv.New32() case "fnv32a": return fnv.New32a() case "fnv64": return fnv.New64() case "fnv64a": return fnv.New64a() case "xor8": return new(xor8) case "fletch16": return &fletch16{} } return nil }
func getHashSHA3(bitsize int) (hash.Hash, error) { switch bitsize { case 224: return sha3.New224(), nil case 256: return sha3.New256(), nil case 384: return sha3.New384(), nil case 512: return sha3.New512(), nil case 521: return sha3.New512(), nil default: return nil, fmt.Errorf("Invalid bitsize. It was [%d]. Expected [224, 256, 384, 512, 521]", bitsize) } }
func computeHash(msg []byte, bitsize int) ([]byte, error) { var hash hash.Hash switch bitsize { case 224: hash = sha3.New224() case 256: hash = sha3.New256() case 384: hash = sha3.New384() case 512: hash = sha3.New512() case 521: hash = sha3.New512() default: return nil, fmt.Errorf("Invalid bitsize. It was [%d]. Expected [224, 256, 384, 512, 521]", bitsize) } hash.Write(msg) return hash.Sum(nil), nil }
b64 "encoding/base64" "fmt" "golang.org/x/crypto/sha3" "math" "math/big" "runtime" "sync" "time" ) var privKey, _ = rsa.GenerateKey(rand.Reader, 256) var pubKey = privKey.PublicKey // privkey.print() // pubkey.print() var hash = sha3.New224() var randReader = rand.Reader var msg = []byte{'d', 'e', 'c', 'r', 'y', 'p', 't', ' ', 'm', 'e'} var label = []byte{'m', 'y', '_', 'l', 'a', 'b', 'e', 'l'} var start = time.Now() type retvals struct { res bool c big.Int } func encryptOAEP(msg []byte) string { fmt.Println("OAEP encrypt") oeap_out, _ := rsa.EncryptOAEP(hash, randReader, &pubKey, msg, label) oeap := b64.StdEncoding.EncodeToString(oeap_out) return oeap