openssl 生成 SHA-256

Jim*_*ins 5 openssl

我正在尝试使用 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 -hexhexkey:...被当作​​文件名,因为它不以破折号开头,并且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、密钥abc616263十六进制的随机在线 HMAC 计算器一致的哈希值 。(注意message这里末尾的换行符。)

所以,看来你可能想要

openssl dgst -sha256 -mac hmac -macopt hexkey:$(cat mykey.txt) -out hmac.txt /bin/ps
Run Code Online (Sandbox Code Playgroud)

由于我们在谈论密码学,这很难;和 OpenSSL,它并不总是具有最易于使用的接口,我建议您还自己验证所有内容,至少两次,而不是相信我的话。


Tom*_*ala 3

openssl dgst -sha256 -hmac -hex -macopt hexkey:$(cat mykey.txt) -out hmac.txt /bin/ps