1
0
mirror of https://github.com/charlienet/go-mixed.git synced 2025-07-18 00:22:41 +08:00

优化哈希函数

This commit is contained in:
2022-03-29 10:02:34 +08:00
parent 421e8e191b
commit 42f85a2518
3 changed files with 111 additions and 65 deletions

View File

@ -2,54 +2,52 @@ package hmac
import (
"crypto/hmac"
"crypto/md5"
"crypto/sha1"
"crypto/sha256"
"crypto/sha512"
"encoding/base64"
"encoding/hex"
"hash"
"github.com/tjfoc/gmsm/sm3"
)
func Sha1(key, msg []byte) []byte { return sum(sha1.New, key, msg) }
func Md5(key, msg []byte) hashResult { return sum(md5.New, key, msg) }
func Sha1Hex(key, msg []byte) string { return hex.EncodeToString(Sha1(key, msg)) }
func Sha1(key, msg []byte) hashResult { return sum(sha1.New, key, msg) }
func Sha1Base64(key, msg []byte) string { return hex.EncodeToString(Sha1(key, msg)) }
func Sha224(key, msg []byte) hashResult { return sum(sha256.New224, key, msg) }
func Sha224(key, msg []byte) []byte { return sum(sha256.New224, key, msg) }
func Sha256(key, msg []byte) hashResult { return sum(sha256.New, key, msg) }
func Sha224Hex(key, msg []byte) string { return hex.EncodeToString(Sha224(key, msg)) }
func Sha384(key, msg []byte) hashResult { return sum(sha512.New384, key, msg) }
func Sha224Base64(key, msg []byte) string { return hex.EncodeToString(Sha224(key, msg)) }
func Sha512(key, msg []byte) hashResult { return sum(sha512.New, key, msg) }
func Sha256(key, msg []byte) []byte { return sum(sha256.New, key, msg) }
func Sm3(key, msg []byte) hashResult { return sum(sm3.New, key, msg) }
func Sha256Hex(key, msg []byte) string { return hex.EncodeToString(Sha256(key, msg)) }
func Sha256Base64(key, msg []byte) string { return hex.EncodeToString(Sha256(key, msg)) }
func Sha384(key, msg []byte) []byte { return sum(sha512.New384, key, msg) }
func Sha384Hex(key, msg []byte) string { return hex.EncodeToString(Sha384(key, msg)) }
func Sha384Base64(key, msg []byte) string { return hex.EncodeToString(Sha384(key, msg)) }
func Sha512(key, msg []byte) []byte { return sum(sha512.New, key, msg) }
func Sha512Hex(key, msg []byte) string { return hex.EncodeToString(Sha512(key, msg)) }
func Sha512Base64(key, msg []byte) string { return hex.EncodeToString(Sha512(key, msg)) }
func Sm3(key, msg []byte) []byte { return sum(sm3.New, key, msg) }
func Sm3Hex(key, msg []byte) string { return hex.EncodeToString(Sm3(key, msg)) }
func Sm3Base64(key, msg []byte) string { return hex.EncodeToString(Sm3(key, msg)) }
func sum(f func() hash.Hash, msg, key []byte) []byte {
func sum(f func() hash.Hash, msg, key []byte) hashResult {
h := hmac.New(f, key)
h.Write(msg)
return h.Sum(nil)
}
type hashResult []byte
func (r hashResult) Hex() string {
return hex.EncodeToString(r)
}
func (r hashResult) Base64() string {
return base64.StdEncoding.EncodeToString(r)
}
func (r hashResult) Bytes() []byte {
return r
}
func (r hashResult) String() string {
return r.Hex()
}