赞
踩
输入Key,Data
Key:固定128位
Data:任意位数(这就是Cmac比Hmac好的地方,Hmac必须是128位的整数倍)
方向:单向只加密
输出:固定128位的加密mac
第一步 生成串L
对128位的0000000...000用Key进行AES加密得到串L
第二步 计算子钥K1
K1 = 将串L左移一位
if L[0] 的最高位 = 1(if(L[0] & 0x80 == 0x80)) 那么 K1 = K1^Rb(异或)
PS:AES算法b = 128,R128 = 0000...000(120)10000111固定
第三步 计算子钥K2
K2 = 将K1左移一位
if(K1[0]& 0x80 == 0x80) K2 = K2^Rb(异或)
第四步 划分M
将Data按照128位为一个块来划分为n个块
前面的块正常计算
如果最后一个块是完整的块则最后一个块使用K1再进行一次异或
否则最后一个块使用K2再进行一次异或
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。