zoukankan      html  css  js  c++  java
  • [转]单倍长密钥加密和双倍长密钥加密,银联直联终端62域难点详解

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

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

    首先来看一段文字:
    ——————————————————–
    银联直联终端测试中,在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位。

  • 相关阅读:
    jvm内存配置参数
    6 个设计原则分别是什么?每种设计原则体现的设计模式是哪个?
    classloader 结构,是否可以自己定义一个 java.lang.String 类,为什么? 双亲代理机制。
    求sum=1+111+1111+........+1....111 .
    交换排序
    字符串压缩 stringZip
    TCP为何采用三次握手来建立连接,若采用二次握手可以吗
    使用jsoup抓取新闻信息
    通过地址获得经纬度(百度Geocoding API)
    FileReader
  • 原文地址:https://www.cnblogs.com/qkhh/p/3653138.html
Copyright © 2011-2022 走看看