无法从命令行生成 SHA512 HMAC

ebl*_*ood -1 openssl

我正在尝试使用 openssl 命令行生成 SHA256 HMAC,但输出不正确。与维基百科的例子相比,我得到了一些不同的东西:

$ openssl dgst -sha256 -hmac "key" <<< "The quick brown fox jumps over the lazy dog"                                                                                                  
(stdin)= abb26bc1a42fb16503a4d5b44d5082ed8fe79229b3c057c6d770956777b83b15
Run Code Online (Sandbox Code Playgroud)

生成与维基百科示例相同结果的快速 PHP 示例:

print hash_hmac('sha256', 'The quick brown fox jumps over the lazy dog', 'key');
f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
Run Code Online (Sandbox Code Playgroud)

我已经尝试了 openssl 命令的各种选项,但无法弄清楚我做错了什么。

mat*_*att 6

here 字符串 ( <<<) 向文本添加换行符,因此您实际上是在计算字符串的 HMAC:

"The quick brown fox jumps over the lazy dog\n"
Run Code Online (Sandbox Code Playgroud)

如您所料,使用echo -n和管道openssl工作:

$ echo -n "The quick brown fox jumps over the lazy dog" | openssl dgst -sha256 -hmac "key"
f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
Run Code Online (Sandbox Code Playgroud)