開放 SSL 中 -hmac 標誌的說明

開放 SSL 中 -hmac 標誌的說明

我在 binance 上遇到了以下用於 unix 的命令,我試圖解壓縮它。看這裡:https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md

(部分:POST /api/v1/order 的簽章端點範例)

openssl dgst -sha256 -hmac

我的理解是,這是對 openssl 命令的呼叫來產生摘要,摘要將是標準規範商定的 sha256 類型。我不明白的是-hmac國旗。它是什麼以及它在數學層面上有什麼作用?

我解決問題的嘗試:

openssl -hmac我用and進行了谷歌搜索,openssl dgst -hmac但前 10 個結果對我沒有用。所以我想更有經驗的用戶最好詢問一下。

更新:

這些文件中沒有提到該標誌:https://www.mkssoftware.com/docs/man1/openssl_dgst.1.asp所以我開始相信它可能沒有加密目的。雖然我現在還不確定。

我發現與此問題中提到的標誌類似的東西:https://stackoverflow.com/questions/7285059/hmac-sha1-in-bash

答案1

HMAC 也稱為密鑰哈希。因此,如果您在簽章產生過程中使用相同的金鑰,則只能在驗證過程中產生相同的雜湊值。 MAC 的結果稱為認證標籤

HMAC 是一種特殊的構造,它使用兩次對雜湊的呼叫 - 在您的例子中是 SHA-256 - 在內部使用,它不使用任何其他密碼原語。因此,它可以被視為一種特定的模式哈希本身。因此包含在總收入

您的程式碼中缺少關鍵數據,這當然是創建帶有密鑰的雜湊所必需的。這應該在之後提出-hmac。不幸的是openssl需要密鑰的二進位格式。欲了解更多信息,請參閱OpenSSL 郵件清單上的舊對話

編輯#1:深入挖掘一下,如果您想將密鑰指定為十六進制,您可以使用以下行:

echo -n "Hello world!" | openssl dgst -sha256 -mac hmac -macopt hexkey:01020304

此函數的輸出是第二次運行哈希的輸出,因此如果僅查看哈希/HMAC 結果的大小,它與 SHA-256 無法區分。當然,內容與僅對資料進行雜湊(或密鑰和資料連接)完全不同。


編輯#2:但是,您尚未指定金鑰,因此實際上會跳過 HMAC 並使用 SHA-256。這已被標記為錯誤,請參閱這裡

答案2

我的 2 美分,如果你使用的是 iOS(或 Mac OS...),厭倦了我寫的。

https://apps.apple.com/it/app/hmac-sha256generator/id6448465719?l=en

相關內容