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
相关文章
相关标签/搜索