跳至主要內容
Lizely

HMAC 生成器

產生 HMAC-SHA-256、HMAC-SHA-384 或 HMAC-SHA-512,從精確的 UTF-8 或十六進位金鑰以及訊息位元組產生。

隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。

使用方式

  1. 1.選擇 SHA-256、SHA-384 或 SHA-512,並確認協定需要完整的 HMAC 標籤。
  2. 2.分別為金鑰與訊息選擇 UTF-8 或十六進位模式,然後輸入精確的位元組,不加額外格式。
  3. 3.產生標籤並複製十六進位或標準 Base64 形式;僅在協定明確要求時才進行轉換或截斷。

關於HMAC 生成器

HMAC 產生器使用 SHA-256、SHA-384 或 SHA-512 計算帶金鑰的訊息認證碼。輸入秘密金鑰與訊息為 UTF-8 文字或精確的十六進位位元組,選擇雜湊演演算法,即可取得完整標籤,以小寫十六進位格式與標準填充 Base64 顯示。此操作使用瀏覽器的 Web Cryptography API,不會將輸入資料傳送至網站伺服器。

HMAC 將加密雜湊與共享的機密金鑰結合。擁有相同金鑰與精確訊息的驗證者可計算出相同的標籤,用以檢測訊息是否被修改,並驗證知道該金鑰的對方。HMAC 並不會隱藏訊息。任何看到明文的人都可以讀取內容,而任何得知金鑰的人都能偽造有效的標籤。

位元組識別度至關重要。文字模式會將兩個欄位皆以 UTF-8 編碼,因此帶有重音符號的字母、CJK 字元與表情符號會佔用多個位元組。十六進位模式僅接受偶數個十六進位數字,並保留每個位元組,包括零。它會拒絕字首、空白字元、冒號與奇數的半字元,以防止意外的格式化字元靜默地改變協定值。

所選取的雜湊演算法會改變標籤長度:SHA-256 會產生 32 位元組,SHA-384 會產生 48,SHA-512 會產生 64。本頁面始終顯示完整輸出。某些協議可能需要截斷、加上演算法識別碼、標準請求字串、二進位包裝或 Base64url 格式,而非標準 Base64。僅根據協議規範套用這些規則;不要憑眼力修剪標籤。

金鑰處理決定了安全性。應使用獨立產生的高熵金鑰資料,符合協定需求,透過受保護的通路分發,按用途分離金鑰,一旦遭入侵即應輪替,並在伺服器上使用常數時間函式比對標籤。人類密碼並非自動等同於強健的 HMAC 金鑰。當必須將密碼轉為金鑰時,應使用應用程式要求的精確密碼匯出方案與引數。

本頁面將每個解碼欄位限制為 1,000,000 位元組。非同步作業會帶有身份標記,因此在 Web Crypto 執行期間更改輸入,可避免舊結果覆蓋新狀態。空的金鑰與訊息會被此介面拒絕,以防止誤觸,即使某些低層標準可能對零長度資料有明確定義。

正確性僅依據八個完整符合 RFC 4231 的標籤驗證。這些案例涵蓋短金鑰、二進位重複位元組金鑰與資料、金鑰小於雜湊長度,以及資料跨越雜湊區塊邊界的情況。SHA-256 與 SHA-512 針對四個獨立輸入進行驗證,同時介面也提供 WebCrypto 定義的 SHA-384 選項。

請在確認協議中確切的位元組與演算法後,再使用產生器。建議在公開向量與二進位欄位使用十六進位模式。比較完整標籤時請使用所需編碼,避免將生產金鑰貼到不受信任的裝置上,並記住成功協議僅證明共用金鑰與位元組一致性,並非訊息保密性。十六進位與 Base64 僅為相同標籤位元組的呈現方式。本頁不會發出 Base64url,也不會預先加入演算法識別碼或將訊息與其標籤打包。請依照協議儲存與傳輸每個欄位,因為視覺上相似的編碼無法互換,解碼它們會產生不同的位元組。

方法與來源

所選的位元組會作為非匯出的 WebCrypto HMAC 金鑰匯入,使用 SHA-256、SHA-384 或 SHA-512。subtle.sign 會返回完整標籤,該標籤會獨立以小寫十六進位與補位的 Base64 形式呈現。

常見問題

HMAC 會加密我的訊息嗎?
不會。它會以共享金鑰驗證精確的訊息位元組,但不會隱藏訊息內容。
為何我的 HMAC 與另一工具的結果不同?
請檢查雜湊值、金鑰位元組、訊息編碼、空白字元、換行規則、標籤截斷,以及對方系統是否使用 Base64url。
我可以使用密碼作為金鑰嗎?
人類密碼通常熵值較低。應使用協定要求的密碼匯出函式(KDF)或產生的機密金鑰,而不是自行設計。

編碼與加密 使用指南

查看全部