一般密码相关的算法,个人是很难实现的,我们可以参照权威机构提供的方案,我想说美国标准与技术研究院 ,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.消息认证码(MAC)的实现原理,码迷,mamicode.com
原文地址:http://blog.csdn.net/autonabi/article/details/24599377