我尝试使用openssl命令行生成SHA256 HMAC,但输出不正确。与Wikipedia example相比,我得到了不同的东西:
$ openssl dgst -sha256 -hmac "key" <<< "The quick brown fox jumps over the lazy dog"
(stdin)= abb26bc1a42fb16503a4d5b44d5082ed8fe79229b3c057c6d770956777b83b15
一个快速的PHP示例,它生成与Wikipedia示例相同的结果:
print hash_hmac('sha256', 'The quick brown fox jumps over the lazy dog', 'key');
f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
我已尝试过openssl命令的各种选项,但无法弄清楚我做错了。
答案 0 :(得分:3)
此字符串(<<<
)为文本添加换行符,因此您实际上是在计算字符串的HMAC:
"The quick brown fox jumps over the lazy dog\n"
使用echo -n
和管道openssl
可以正常工作:
$ echo -n "The quick brown fox jumps over the lazy dog" | openssl dgst -sha256 -hmac "key"
f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8