AES-CMAC的原理是什么
时间: 2023-12-24 16:41:20 浏览: 1034
AES-128 CMAC
5星 · 资源好评率100%
AES-CMAC是一种基于AES算法的消息认证码(MAC),用于保证数据的完整性和真实性。它的原理可以简单概括为以下几个步骤:
1. 选择一个适当的密钥,并使用该密钥对消息进行加密,得到一个密文。
2. 对密文进行AES-CBC加密,并取最后一个加密块作为“链值”(也称为“K1”)。
3. 对K1进行一次AES加密,并将结果分成两个16字节的数值L和R。
4. 如果L的最高位为0,则将其左移一位;否则,将其左移一位并与0x87异或。
5. 如果L左移后的结果的最高位为0,则将其左移一位,并用0填充最低位;否则,将其左移一位并与0x1B异或,并用0填充最低位。
6. 如果L的最高位为0,则将其左移一位;否则,将其左移一位并与0x87异或。
7. 对L和R进行异或,得到一个128位的数值M。
8. 对M进行AES加密,并取结果的最后一个加密块作为MAC。
9. 如果MAC的长度不足16字节,则在其末尾补0。
10. 将MAC作为消息的签名,同时将原始消息和MAC一起发送给接收方。
11. 接收方使用相同的密钥和算法对接收到的消息进行解密,并重新计算MAC。
12. 如果重新计算得到的MAC与接收到的MAC相同,则说明消息是合法的;否则,说明消息可能被篡改或伪造。
总结来说,AES-CMAC的原理是使用AES算法对消息进行加密和认证,并通过链式加密和异或操作来生成一个安全的MAC值,用于保证数据的完整性和真实性。
阅读全文