MAC與HMAC介紹

在密碼學中,(消息認證碼)Message Authentication Code是用來認證消息的比較短的信息。換言之,MAC用來保證消息的數據完整性和消息的數據源認證。算法

MAC由消息自己和一個密鑰通過一系列計算產生,用於生成MAC的算法,稱爲MAC算法。MAC算法應能知足以下幾個條件:ide

在僅有消息自己沒有密鑰的狀況下,沒法獲得該消息的MAC;
同一個消息在使用不一樣密鑰的狀況下,生成的MAC應當無關聯;
在已有一系列消息以及其MAC時,給定一個新的消息,沒法獲得該消息的MAC。
下圖摘自維基百科,能夠很好的描述MAC的使用原理:
MAC與HMAC介紹加密

#HMACcode

HMAC是MAC算法中的一種,其基於加密HASH算法實現。任何加密HASH, 好比MD五、SHA256等,均可以用來實現HMAC算法,其相應的算法稱爲HMAC-MD五、HMAC-SHA256等。blog

如下僞代碼,描述了HMAC算法的計算過程:hash

function hmac (key, message)
    if (length(key) > blocksize) then
        key = hash(key) // keys longer than blocksize are shortened
    end if
    if (length(key) < blocksize) then
        key = key ∥ [0x00 * (blocksize - length(key))] // keys shorter than blocksize are zero-padded (where ∥ is concatenation)
    end if

    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
end function
相關文章
相關標籤/搜索