前言
MAC算法用于验证消息的正确性, 通信的双方根据共享的密钥,分别对消息进行计算。发送方发送原始消息+计算结果A,接收方接收到消息后,也对消息进行计算得到计算结果B,并对比A和B来判断消息是否完整正确。
消息认证码加密使用两种方法, 一种是基于散列函数实现,另一种是基于分组密码实现。
HMAC
基于散列实现的称为HMAC(Hash Message Authentication Code)。
原始消息经过散列函数计算得到摘要, 摘要和密钥作用生成最终的认证码。发送方把消息和认证码发送出去,接收方也是用相同的散列函数记得得到摘要2,摘要2和密钥作用生成认证码,对比两个认证码来判断消息是否被篡改。
HMAC包含几个输入量:
散列函数MD、原始消息M、消息M的块数、每块的位数b、密钥K和
ipad/opad 00110110, 01011010重复b/8次。
CBCMAC
基于分组算法密码实现,对消息使用CBC模式进行加密,取密文的最后一块作为认证码。如果使用的是AES加密,那就是AES的CBC-MAC。
首先对消息进行分组和填充,然后进行分组链接加密。
CMAC
CMAC(Cipher Block Chaining-Message Authentication Code),也简称为CBC_MAC,它也是一种基于对称秘钥分组加密算法的消息认证码。
CMAC算法通过密钥派生出两个子秘钥,然后对最后的一个块作处理,再使用CBC模式加密数据,取最后一个块的高n为作为MAC。
参考链接:https://blog.csdn.net/KXue0703/article/details/119522934
更多
稍微过一下mac的实现方式,有个粗略的记忆。
行动,才不会被动!
欢迎关注个人公众号 微信 -> 搜索 -> fishmwei,沟通交流。
博客地址: https://fishmwei.github.io
掘金主页: https://juejin.cn/user/2084329776486919