Openssl

openssl 生成 SHA-256

  • May 20, 2018

我正在嘗試使用 openssl 創建使用 HMAC-SHA-256 的文件的加密雜湊。我對為什麼在輸出中看到“沒有這樣的文件或目錄”錯誤感到困惑。

我使用的密鑰在一個名為 mykey.txt 的文件中。

這是我的命令:

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

和輸出

在此處輸入圖像描述

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

-hmac將 key 作為參數(參見手冊),因此您的命令要求使用 key 的 HMAC -hexhexkey:...被視為文件名,因為它不以破折號開頭,並且openssl在文件名之後不帶選項,因此以下-out也是文件名。

要使用以十六進製字元串形式給出的密鑰獲取 HMAC,您需要使用-mac hmacand -macopt hexkey:<key>。請注意,將-hmac <key>and -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,它並不總是具有最易於使用的界面,我建議您自己驗證所有內容,至少兩次,而不是相信我的話。

引用自:https://unix.stackexchange.com/questions/444978