初始HMAC

百度百科
HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code)的缩写,由H.Krawezyk,M.Bellare,R.Canetti于1996年提出的一种基于Hash函数和密钥进行消息认证的方法,并于1997年作为RFC2104被公布,并在IPSec和其他网络协议(如SSL)中得以广泛应用,现在已经成为事实上的Internet安全标准。它可以与任何迭代散列函数捆绑使用。

最大特征便是,要求通信双方共享密钥KEY、约定算法、对报文进行HASH运算,形成固定长度的认证码。通信双方通过认证码检验来确定报文的合法性

代码实现

JavaScript实现

const crypto = require('crypto-js')

function HMACEncrypt(text,key){
    return crypto.HmacMD5(text,key).toString()
}

console.log(HMACEncrypt('你好','HELLO'))

输出结果:

07e39579867b138cbe7cf0f226100360

这里仅仅演示了基于MD5的HMAC,还有SHA1 SHA256等

Python实现

import hmac


def hamc_encrypt(text, key, method='MD5'):
    md_5 = hmac.new(key, text, digestmod=method)  # 注意:KEY和TEXT均为Bytes类型,Bytes类型为ASCII编码
    return md_5.hexdigest()


if __name__ == '__main__':
    print(hamc_encrypt(b'HELLO', b'HELLO'))

输出结果:

08e3af27148647fb56c048b38399bcd4