1、简介
CMAC:基于对称密钥分组加密算法的消息认证码。
对称密钥:相当于采用对称算法来加密,如AES、DES等;
分组加密:就是采用分组的方式,将消息分成对应算法对应大小的块;
C:采用的是CBC模式;
2、符号
B:加密块的长度;
Rb:生成子密钥的常量字符串,AES中:0x87(128位),DES中:0x1B(64位);
K:加密算法中的密钥;
K1、K2:通过K生成的子密钥1和子密钥2;
Mi:消息被划分成的第几个消息块;
3、步骤
1、生成子密钥;
2、获取B的长度,Rb等处理;
3、对分块消息处理;
4、根据是否需要填充采用不同密钥处理;
4、图示
5、其他
对于分成init,update,dofinal三部分处理的话,即init部分可以处理不变的部分,生成两个子密钥,
根据加密算法采用哪种Rb、B的长度是多大。update部分即可以对第一块到最后一块的前一块做处理,即可处理不同地址传过来的消息。
最后一块因为有两种情况,可以放到dofinal中处理,当然dofinal中也可处理所有的块。还是根据自己理解的来划分即可。