密码键盘介绍五:MAC计算
密码键盘介绍五:MAC计算MAC计算有很多,有ANSI9.9、ANSI9.19、银联算法、PBOC算法等等。本文只介绍最简单,也是用的比较多的两个算法。一个是ANSI9.9(DES算法),另一个是ANSI9.19(3DES算法)。
MAC计算(ANSI9.9MAC算法)
(最常用的单DES的MAC算法)
待加密数据: 0x 31323334353637383930313233343536
MacKey(明文): 1234567887654321
[*] 将待加密数据,每8个字节划分位1组数据,如果待加密数据不是8的倍数,右补齐0x00
data0 = 3132333435363738
data1 = 3930313233343536
[*] 用MacKey使用DES加密data0,得到:
temp1 = 29EB081CD07ABE42
4.用temp1 XOR data1
29EB081CD07ABE42
XOR
3930313233343536
--得到
temp2 = 10DB392EE34E8B74
5.用MacKey使用DES加密temp2,得到:
MAC = 179CAE9CC5ADF086
===============
MAC计算(ANSI9.19MAC算法)
(最常用的单3DES的MAC算法)
3DES算法分析
根据前面的3DES算法图,分析得到算法的运算步骤如下:
[*]3DES要求的密钥是16字节,把密钥分开为2个部分:LKey = 左边8个字节; RKey = 右边8个字节
[*]待加密数据按照8个字节来分组:分成D0,D1,D2...DN
[*]用Lkey对D0加密生成T1,T1异或D1生成T2,用Lkey对T2加密生成T3,以此类推。等到加密结果TN
[*]用RKey对TN解密生成TN+1
[*]用LKey对TN+1加密生成TN+2
TN+2就是最终3DES加密的结果。
3DES算法例子
MacKey(明文): B9020C9B5F2509E34D90215193DAE405
待加密数据: 31323334353637383930313233343536
D0 = 3132333435363738
D1 = 3930313233343536
LKey = B9020C9B5F2509E3
RKey = 4D90215193DAE405
D0通过LKey加密: T1 = 4F7B760387B3619A
T1 XOR D1: T2 = 764B4731B48754AC
T2通过LKey加密: T3 = 5225FCFD9474B439
T3通过RKey解密: T4 = C5D07C531F38D561 (注意这里是解密,别弄错了)
T4通过LKey加密: T5 = BA361543065DD616
加密结果: BA361543065DD616
如何通过密码键盘来计算MAC
通过密码键盘来计算MAC,通常包含如下几个步骤(不同厂家的产品顺序会不同)
[*]激活工作密钥(加密需要使用的密钥MACKey)
[*]设置MAC运算使用的算法
[*]计算MAC,返回MAC值
页:
[1]