package starcrypto import ( "crypto/hmac" "crypto/md5" "crypto/sha1" "crypto/sha256" "crypto/sha512" "encoding/hex" "golang.org/x/crypto/md4" "golang.org/x/crypto/ripemd160" "hash" ) func chmac(message, key []byte, f func() hash.Hash) []byte { h := hmac.New(f, []byte(key)) h.Write([]byte(message)) return h.Sum(nil) } func chmacStr(message, key []byte, f func() hash.Hash) string { return hex.EncodeToString(chmac(message, key, f)) } func HmacMd4(message, key []byte) []byte { return chmac(message, key, md4.New) } func HmacMd4Str(message, key []byte) string { return chmacStr(message, key, md4.New) } func HmacMd5(message, key []byte) []byte { return chmac(message, key, md5.New) } func HmacMd5Str(message, key []byte) string { return chmacStr(message, key, md5.New) } func HmacSHA1(message, key []byte) []byte { return chmac(message, key, sha1.New) } func HmacSHA1Str(message, key []byte) string { return chmacStr(message, key, sha1.New) } func HmacSHA256(message, key []byte) []byte { return chmac(message, key, sha256.New) } func HmacSHA256Str(message, key []byte) string { return chmacStr(message, key, sha256.New) } func HmacSHA384(message, key []byte) []byte { return chmac(message, key, sha512.New384) } func HmacSHA384Str(message, key []byte) string { return chmacStr(message, key, sha512.New384) } func HmacSHA512(message, key []byte) []byte { return chmac(message, key, sha512.New) } func HmacSHA512Str(message, key []byte) string { return chmacStr(message, key, sha512.New) } func HmacSHA224(message, key []byte) []byte { return chmac(message, key, sha256.New224) } func HmacSHA224Str(message, key []byte) string { return chmacStr(message, key, sha256.New224) } func HmacRipeMd160(message, key []byte) []byte { return chmac(message, key, ripemd160.New) } func HmacRipeMd160Str(message, key []byte) string { return chmacStr(message, key, ripemd160.New) }