使用CMAC算法生成MAC的流程
时间: 2023-12-10 15:15:11 浏览: 315
AES-CMAC c语言实现编程
使用CMAC算法生成MAC的流程如下:
1. 确定密钥:需要一个128位的密钥K。
2. 对数据进行填充:要求数据的长度必须是128位的整数倍,如果不是,则需要进行填充。填充的方式为最后一个分组不足128位时,将其填充为128位,填充方式为在末尾加上一个1,然后用0填充到末尾。
3. 分组:将填充后的数据按128位分组。
4. 计算subkey:根据密钥K,生成两个子密钥K1和K2。K1和K2的生成方式如下:
a. 对密钥K进行AES加密,得到结果L。
b. 如果L的最高位为0,K1的值为L左移1位;如果L的最高位为1,K1的值为(L左移1位)异或Rb。
c. 如果K1的最高位为0,K2的值为K1左移1位;如果K1的最高位为1,K2的值为(K1左移1位)异或Rb。
其中,Rb为固定的常量值,为0x87(十六进制)。
5. 计算MAC值:将第一个分组与K1进行XOR运算,得到结果Y0,然后对Y0进行AES加密,得到结果Y1;将Y1与下一个分组进行XOR运算,得到结果Y2,然后对Y2进行AES加密,得到结果Y3,以此类推,直到处理完所有分组。
6. 计算MAC:处理完所有分组后,将最后一个结果Yn与K2进行XOR运算,得到结果Z,再对Z进行AES加密,得到MAC值。
7. 输出MAC:将MAC值输出。
这就是使用CMAC算法生成MAC的流程。
阅读全文