【问题标题】:Does .Net TDES do enc-dec-enc or end-enc-enc?.Net TDES 是否执行 enc-dec-enc 或 end-enc-enc?
【发布时间】:2020-02-16 19:24:00
【问题描述】:

我正在尝试在 .Net 4.5 中验证支付卡。 EMV Book 2 Annex B1.1 说: DES3(K)[X] = DES(K L )[DES -1 (K R )[DES(K L )[X]]] 或者,X 的 3DES 表示:

块引用

  1. 用 16 字节密钥的左半部分加密 X
  2. 使用 16 字节密钥的右半部分解密该密文
  3. 用密钥的左半部分加密假定的明文。

你可以称之为 enc-dec-enc。 谁能向我保证.Net 的 TripleDESCryptoServiceProvider 是这样做的,而不是 enc-enc-enc? ms docs page 没说。

【问题讨论】:

  • TDES 确实对应于 enc-dec-enc 的情况,hereTripleDESCryptoServiceProvider 将相应地实现这一点。否则,这将是一个错误。通过对each子操作使用same DES key K(对应于24字节的TDES key K || K || K),可以很容易地检查实现。这样,三个子操作中的两个相互抵消,TDES 加密简化为简单的 DES 加密,即对应于DESCryptoServiceProvider 的结果(对于 enc-enc-编码)。
  • 换句话说,就@Topaco 所说,使用单个长度密钥您无法进行TDES。密钥至少应为双倍长度。

标签: encryption des 3des emv


【解决方案1】:

无论语言如何,TDES 的所有实现都遵循加密-解密-加密。 对于双长度密钥,使用第一个块 [前 8 个字节] 加密数据,使用第二个块 [第二个 8 个字节] 解密并使用第一个块再次加密。 对于三倍长度密钥,在使用第一个块加密的最后一步中,将使用第三个密钥块。 如果您想确保相同,只需将一些测试密钥和数据传递给库,然后比较您从任何在线免费工具(如https://paymentcardtools.com/des-calculator)获得的值

我可以看到文档中提到了它。点击开头的TripleDES,然后阅读备注部分。

【讨论】:

    猜你喜欢
    • 2021-04-08
    • 2016-02-11
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多