Encryption .Net TDE执行enc dec enc还是enc enc enc enc?

Encryption .Net TDE执行enc dec enc还是enc enc enc enc?,encryption,des,3des,emv,Encryption,Des,3des,Emv,我正在尝试验证.NET4.5中的支付卡。EMV第2册附录B1.1规定: DES3(K)[X]=DES(kl)[DES-1(kr)[DES(kl)[X]] 或者,X的3DES表示: 大宗报价 使用16字节密钥的左半部分加密X 用16字节密钥的右半部分解密该密文 用密钥的左半部分加密假定的明文 你可以叫它enc-dec-enc。 有谁能向我保证.Net的TripleDESCryptoServiceProvider是这样做的,而不是enc enc enc?没有说明。无论使用何种语言,TDE的所有实现都

我正在尝试验证.NET4.5中的支付卡。EMV第2册附录B1.1规定: DES3(K)[X]=DES(kl)[DES-1(kr)[DES(kl)[X]] 或者,X的3DES表示:

大宗报价

  • 使用16字节密钥的左半部分加密X
  • 用16字节密钥的右半部分解密该密文
  • 用密钥的左半部分加密假定的明文
  • 你可以叫它enc-dec-enc。
    有谁能向我保证.Net的TripleDESCryptoServiceProvider是这样做的,而不是enc enc enc?没有说明。

    无论使用何种语言,TDE的所有实现都遵循加密-解密-加密。 对于双倍长度密钥,使用第一个块[first 8 bytes]加密数据,使用第二个块[second 8 bytes]解密,然后使用第一个块再次加密。 对于三重长度密钥,在使用第一个密钥块加密的最后一步中,使用第三个密钥块进行加密。 如果您想确保相同,只需将一些测试密钥和数据传递到库中,并比较您从任何在线免费工具(如


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

    TDES确实对应于案例enc dec enc,而
    TripleDESCryptoServiceProvider将相应地实现这一点。否则它将是一个bug。通过对每个子操作使用相同的DES键K(对应于24字节的TDES键K | | K | K),可以很容易地检查实现。通过这种方式,三个子操作中的两个子操作相互抵消,TDES加密被简化为简单的DES加密,即将对应于
    DecryptoServiceProvider
    (对于enc enc enc enc,情况并非如此)的结果。换言之,根据@Topaco的说法,使用单长度密钥无法进行TDES。密钥的长度至少应为两倍。