Seb*_*n J 3 cryptography go hmac
我正在尝试从消息和秘密生成 HMAC 256 哈希。但是当我返回它时,它是不正确的。
func makeSig(s Signature) string {
secretHash := md5.New()
secretHash.Write([]byte("secret"))
key := secretHash.Sum(nil)
fmt.Println("The secret key is ", hex.EncodeToString(key))
message := strings.Join([]string{"one", "two", "three"}, "")
fmt.Println("The message is ", message)
sig := hmac.New(sha256.New, key)
sig.Write([]byte(message))
return hex.EncodeToString(sig.Sum(nil))
}
Run Code Online (Sandbox Code Playgroud)
不知道有什么问题,请指教。
您正在打印“密钥”的十六进制编码版本,但您使用的是该密钥的原始未编码字节。
示例中的密钥打印为:
5ebe2294ecd0e0f08eab7690d2a6ee69
Run Code Online (Sandbox Code Playgroud)
但你把这个交给 hmac:
[]byte{0x5e, 0xbe, 0x22, 0x94, 0xec, 0xd0, 0xe0, 0xf0, 0x8e, 0xab, 0x76, 0x90, 0xd2, 0xa6, 0xee, 0x69}
Run Code Online (Sandbox Code Playgroud)
作为一个字符串,看起来像:
"^\xbe"\x94\xec\xd0\xe0\xf0\x8e\xabv\x90\xd2\xa6\xeei"
Run Code Online (Sandbox Code Playgroud)
直接使用字符串应该可以看出区别:http : //play.golang.org/p/wteqLNcnTV
哪个打印
3f0ee534c3d86cb16f4413fe1a76a12f94449f751f7d632cd87f24b94e76c710
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12122 次 |
| 最近记录: |