You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
1.9 KiB
Go
88 lines
1.9 KiB
Go
8 months ago
|
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)
|
||
|
}
|