我正在尝试使用 openssl 创建使用 HMAC-SHA-256 的文件的加密哈希。我很困惑为什么我在输出中看到“没有这样的文件或目录”错误。
我使用的密钥位于名为 mykey.txt 的文件中。
这是我的命令:
openssl dgst -sha256 -hmac -hex hexkey:$(cat mykey.txt) -out hmac.txt /bin/ps
Run Code Online (Sandbox Code Playgroud)
和输出
ilk*_*chu 11
-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))'
Run Code Online (Sandbox Code Playgroud)
全部给出99592e56fcde028fb41882668b0cbfa0119116f9cf111d285f5cedb000cfc45a
与消息message\n
、密钥abc
或616263
十六进制的随机在线 HMAC 计算器一致的哈希值 。(注意message
这里末尾的换行符。)
所以,看来你可能想要
openssl dgst -sha256 -mac hmac -macopt hexkey:$(cat mykey.txt) -out hmac.txt /bin/ps
Run Code Online (Sandbox Code Playgroud)
由于我们在谈论密码学,这很难;和 OpenSSL,它并不总是具有最易于使用的接口,我建议您还自己验证所有内容,至少两次,而不是相信我的话。
归档时间: |
|
查看次数: |
14089 次 |
最近记录: |