答案1
-hmac
将密钥作为参数(参见手册),因此您的命令要求使用密钥 的 HMAC -hex
。hexkey:...
被视为文件名,因为它不以破折号开头,并且openssl
文件名后不带选项,因此以下-out
也是文件名。
要获取具有以十六进制字符串形式给出的密钥的 HMAC,您需要使用-mac hmac
和-macopt hexkey:<key>
。请注意,一起使用-hmac <key>
和
-mac hmac
不起作用,并且-macopt
需要-mac hmac
.
测试:
openssl dgst -sha256 -hmac abc <<< "message"
openssl dgst -sha256 -hmac abc -macopt hexkey:12345678 <<< "message"
openssl dgst -sha256 -mac hmac -macopt hexkey:616263 <<< "message"
perl -MDigest::HMAC=hmac_hex -MDigest::SHA=sha256 \
-le 'print(hmac_hex("message\n", "abc", \&sha256))'
所有给出的哈希值 99592e56fcde028fb41882668b0cbfa0119116f9cf111d285f5cedb000cfc45a
与随机在线 HMAC 计算器的消息message\n
、密钥abc
或616263
十六进制一致。 (请注意此处末尾的换行符message
。)
所以,看来你可能想要
openssl dgst -sha256 -mac hmac -macopt hexkey:$(cat mykey.txt) -out hmac.txt /bin/ps
既然我们谈论的是密码学,这很难; OpenSSL 并不总是具有最易于使用的界面,我建议您自己验证所有内容,至少两次,而不是相信我的话。
答案2
openssl dgst -sha256 -hmac -hex-macopt十六进制键:$(cat mykey.txt) -out hmac.txt /bin/ps
答案3
我的 2 美分,如果你使用的是 iOS(或 Mac OS...),厌倦了我写的。
https://apps.apple.com/it/app/hmac-sha256generator/id6448465719?l=en