renheshi 发表于 2017-7-7 11:34:33

密码键盘介绍五: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]
查看完整版本: 密码键盘介绍五:MAC计算