HmacSHA256
加密算法比拟罕用的加密算法之一,它比MD5更加平安。HmacSHA256也是微信领取举荐的加密形式。
在Go语言中实现HmacSHA256
还是比较简单的,尽管没有PHP
的hash_hmac
一个函数搞定的形式简略,但比起Java
中的实现还是简略不少。
package mainimport ( "crypto/hmac" "crypto/sha256" "encoding/base64" "encoding/hex" "fmt")// HmacSha256 计算HmacSha256// key 是加密所应用的key// data 是加密的内容func HmacSha256(key string, data string) []byte { mac := hmac.New(sha256.New, []byte(key)) _, _ = mac.Write([]byte(data)) return mac.Sum(nil)}// HmacSha256ToHex 将加密后的二进制转16进制字符串func HmacSha256ToHex(key string, data string) string { return hex.EncodeToString(HmacSha256(key, data))}// HmacSha256ToHex 将加密后的二进制转Base64字符串func HmacSha256ToBase64(key string, data string) string { return base64.URLEncoding.EncodeToString(HmacSha256(key, data))}func main() { // secret 是加密要应用的key // apple 是要加密的内容 fmt.Printf("HmacSha256转16字符串: %s\n", HmacSha256ToHex("secret", "apple")) fmt.Printf("HmacSha256转base字符串: %s\n", HmacSha256ToBase64("secret", "apple"))}
运行后果:
HmacSha256转16字符串: 37431003b2d14b6bddb9334c7ec2ff0ea0c65f96ec650952384e56cae83c398fHmacSha256转base字符串: N0MQA7LRS2vduTNMfsL_DqDGX5bsZQlSOE5Wyug8OY8=
能够看出,HmacSha256
加密后是二进制数据,其中蕴含不可见字符串,不便于传输,通常将其转换为16进制
或Base64
字符串。
最初,举荐一个 golang 的加解密库:https://github.com/forgoer/openssl,它反对AES
、DES
、RSA
、sha1
、Hmac-Sha1
、sha256
、Hmac-Sha256
等罕用算法。