(Translated by https://www.hiragana.jp/)
HMAC - 维基百科,自由的百科全书 とべ转到内容ないよう

HMAC

本页使用了标题或全文手工转换
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
SHA-1 HMACさんせい過程かてい

HMAC (ゆう时扩てん英語えいごkeyed-hash message authentication code, きむ鑰雜みなと訊息鑑別かんべつ, ある 英語えいごhash-based message authentication codeざつみなと訊息鑑別かんべつ),一種通過特別計算方式之後產生的訊息鑑別かんべつ(MAC),使用しようみつ碼雜みなと函數かんすう同時どうじ結合けつごう一個加密金鑰。它可以用らい保證ほしょう資料しりょうてきかんせいせい同時どうじ以用らいさくぼう訊息てき份驗しょう

定義ていぎ

[编辑]

根據こんきょRFC 2104,HMACてき數學すうがく公式こうしきため

其中:

Hためみつざつみなと函數かんすう(如SHA家族かぞく
Kためみつ(secret key)
mよう认证てき消息しょうそく
K'原始げんしみつK导出てき另一个秘密密钥(如果Kたん于散れつ函数かんすうてき输入块大しょう,则向みぎはまたかし(Padding)れい;如果该块大小だいしょうさら长,则对K进行れつ
|| 代表だいひょうくしせっ
代表だいひょうあやある(XOR)
opad 外部がいぶはまたかし(0x5c5c5c…5c5c,一段いちだんじゅうろく进制つねりょう
ipad 内部ないぶはまたかし(0x363636…3636,いちだんじゅうろく进制つねりょう

实现

[编辑]

下面かめんてき伪代码展示てんじりょう如何いか实现HMAC。とう使用しよう以下いかれつ函数かんすういち时,块大しょう为64(节):SHA-1、MD5、RIPEMD-128/160[1]

 function hmac (key, message) {
    if (length(key) > blocksize) {
        key = hash(key) // keys longer than blocksize are shortened
    }
    if (length(key) < blocksize) {
        // keys shorter than blocksize are zero-padded (where  is concatenation)
        key = key ∥ [0x00 * (blocksize - length(key))] // Where * is repetition.
    }
   
    o_key_pad = [0x5c * blocksize] ⊕ key // Where blocksize is that of the underlying hash function
    i_key_pad = [0x36 * blocksize] ⊕ key // Where ⊕ is exclusive or (XOR)
   
    return hash(o_key_pad ∥ hash(i_key_pad ∥ message)) // Where  is concatenation
}

相關そうかん條目じょうもく

[编辑]

参考さんこう文献ぶんけん

[编辑]
  1. ^ RFC 2104, section 2, "Definition of HMAC", page 3.