如何使用 CommonCrypto 的 3DES 的 2TDEA 选项

How to use 2TDEA option of 3DES with CommonCrypto

当我使用 CCCrypt() 和 3DES 算法加密数据时,我必须提供 24 字节长的密钥,就像 3DES 的 3TDEA 选项一样。由于我使用 2TDEA 和 16 字节长密钥的原因。但是当我使用 16 字节密钥时,CCCrypt() 失败。用它做什么?

result = CCCrypt(kCCEncrypt, 
                 kCCAlgorithm3DES, 
                 kCCOptionPKCS7Padding | kCCOptionECBMode, 
                 desKey, 
                 24, 
                 nil,
                 dataBlock, 
                 dataBlockSize, 
                 outputData.mutableBytes, 
                 outputData.length, 
                 &outLength); 

免责声明

任何会读到这篇文章的人:

It's obsolete, deprecated and not secure.

3DES & 2TDEA

三重 DES = 3DES、TDES、TDEA、三重 DEA。它有很多名字,但它们都指代同一个密码。它是对每个数据块应用三次 DES。

您可以访问 Triple DES article on Wikipedia to learn more about it. Several Keying options 存在并且您对第二个感兴趣:

K1 and K2 are independent, and K3 = K1. Sometimes known as 2TDEA or double-length keys. This provides a shorter key length of 112 bits and a reasonable compromise between DES and Keying option 1, with the same caveat as above. This is an improvement over "double DES" which only requires 256 steps to attack. NIST has deprecated this option.

你有16个字节(K1,K2)。这个键控选项表示 K3 = K1。这意味着您必须复制前 8 个字节并附加它们。

  • AAAAAAAA11111111(16字节,K1,K2
  • AAAAAAAA11111111????????(24字节,K1,K2,K3?)
  • AAAAAAAA11111111AAAAAAAA(24字节,K1,K2,K3 其中 K3 = K1)