cmac笔记

输入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再进行一次异或

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值