• [转]单倍长密钥加密和双倍长密钥加密,银联直联终端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位。

  • 相关阅读:
    ionic localstorage
    angular 中文鏈接
    把jqmobi 變成jQuery 的插件 從此使用jQuery
    jqmobi 的一些設置
    ionic ngcordova map 地圖
    ionic pull to refresh 下拉更新頁面
    json 對象的序列化
    鍵盤彈出,頁面佈局被推上去了.....
    Cordova V3.0.0中config.xml配置文件的iOS Configuration
    android ios 只能輸入數字 不能輸入小數點的 函數 cordova
  • 原文地址:https://www.cnblogs.com/qkhh/p/3653138.html
Copyright © 2020-2023  润新知