CMAC计算包含三个关键步骤:
1. 子密钥K1和K2的扩展过程:
其中,即
128位时Rb b=128,共16字节,前15字节为0x00,最后一个字节为0x87;
64位时Rb b=64,共8字节,前7个字节为0x00,最后一个字节为0x1B;
2. CMAC计算过程:
3. 整体计算流:
整体计算流程分整数倍分组计算和非整数倍分组计算;
1. 整数倍分组计算最后需要异或K1后再加密;
2. 非整数倍分组需要先填充,填充规则见步骤4,填充后再使用K2异或,之后再加密;
3. 初始向量IV,见步骤5;
以上内容参考《NIST.SP.800-38B Recommendation for Block Cipher Modes of Operation:The CMAC Mode for Authentication》