cmac笔记

cmac笔记输入 Key DataKey 固定 128 位 Data 任意位数 这就是 Cmac 比 Hmac 好的地方 Hmac 必须是 128 位的整数倍 方向 单向只加密输出 固定 128 位的加密 mac 第一步生成串 L 对 128 位的 0000000 000 用 Key 进行 AES 加密得到串 L 第二步计算子钥 K1K1 将串 L 左移一位 ifL 0 的最高位 1 那么 K1 K1

输入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)固定

第三步 计算子钥K2

K2 = 将K1左移一位

if(K1[0]& 0x80 == 0x80) K2 = K2^Rb(异或)

第四步 划分M

将Data按照128位为一个块来划分为n个块

前面的块正常计算

如果最后一个块是完整的块则最后一个块使用K1再进行一次异或

否则最后一个块使用K2再进行一次异或

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217175.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:10
下一篇 2026年3月18日 上午10:11


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号