首页 > 代码库 > 消息认证码(MAC)的实现原理
消息认证码(MAC)的实现原理
一般密码相关的算法,个人是很难实现的,我们可以参照权威机构提供的方案,我想说美国标准与技术研究院 ,NIST(National Institute of Standards and Technology)。
今天谈到的MAC,使用NIST提供的公开800-38B算法文档。这个MAC算法是基于对称密钥块算法,故称之为CMAC,还是使用了AES。
算法原理:
1,根据输入的key,产生两个子key
2,产生MAC值。
具体步骤:
产生sub key1与key2过程
1. Let L = CIPHK(0b).
2. If MSB1(L) = 0, then K1 = L << 1;Else K1 = (L << 1) ⊕ Rb; see Sec. 5.3 for the definition of Rb.
3. If MSB1(K1) = 0, then K2 = K1 << 1;Else K2 = (K1 << 1) ⊕ Rb.
4. Return K1, K2.
其中CIPHK就是就是利用key对16字节的0进行对称加密。
产生CMAC的过程
1. Apply the subkey generation process in Sec. 6.1 to K to produce K1 and K2.2. If Mlen = 0, let n = 1; else, let n = ?Mlen/b?.
3. Let M1, M2, ... , Mn-1, Mn * denote the unique sequence of bit strings such that M =M1 || M2 || ... || Mn-1 || Mn*, where M1, M2,..., Mn-1 are complete blocks.2
4. If Mn* is a complete block, let Mn = K1 ⊕ Mn*; else, let Mn = K2 ⊕ (Mn*||10j),where j = nb-Mlen-1.
5. Let C0 = 0b.
6. For i = 1 to n, let Ci = CIPHK(Ci-1 ⊕ Mi).
7. Let T = MSBTlen(Cn).
8. Return T.
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。