博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

说明不清楚的文档,真是害死人了。

-------------------------------------------

首先来看一段文字:
——————————————————–
银联直联终端测试中,在POS终端签到的应答报文中,62域是如何规定的?   
      62域长度应为24或40个字节。对于单倍长密钥算法:前12个字节为PIN的工作密钥的密文,后12个字节为MAC的工作密钥的密文。(其中,前8个字 节是密文,后4个字节是checkvalue;用前8个字节解出的明文做key,对8个字节00做单倍长密钥算法,取结果的前四位与checkvalue 的值比较应该是一致的)。

      对于双倍长密钥算法:前20个字节为PIN的工作密钥的密文,后20个字节为MAC的工作密钥的密文。(其中,“PIN工作密钥”前16个字节是密文,后 4个字节是checkvalue;用前16个字节解出明文做key,对8个字节00做双倍长密钥算法,取结果的前四位与checkvalue 的值比较应该是一致的;“MAC工作密钥”前8个字节是密文,再8个字节是二进制零,后4个字节是checkvalue;用前8个字节解出明文做key, 对8个字节00做单倍长密钥算法,取结果的前四位与checkvalue 的值比较应该是一致的)。
———————————————————

这个坑爹的单倍长密钥算法和双倍长密钥算法。以及checkvalue让我查了好几天才搞清楚究竟什么回事。现在发出来让有同样困惑的同志了解下。

首先,单倍长密钥算法,和双倍长密钥算法,在这里分别是DES算法的DES算法和3DES加密算法。

其中由于密钥为16字节64位,32字节128位所以称为单倍长密钥和双倍长密钥算法,相应的还有三倍长密钥算法。

单倍长密钥为k1   双倍长密钥为k2拆分为前后两部分k2=k21+k22。假设des算法写作DES,解密算法写作UDES

单倍长密钥算法为:str = DES(str ,k1)

双倍长密钥算法为:

  1. str = DES(str ,k21)
  2. str = UDES(str ,k22)
  3. str = DES(str ,k21)

其对应的解密过程就不详解了。

 

那么坑爹的checkvalue又是什么呢?

val = DES(‘00000000’ ,k1)

checkvalue为val的前4位。

posted on 2014-04-08 22:40  黑米  阅读(7449)  评论(4编辑  收藏  举报