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

问题描述 投票:0回答:1

[当我使用3DES算法使用CCCrypt()加密数据时,我必须提供24字节长的密钥,例如3DES的3TDEA选项。由于某种原因,我使用了16字节长密钥的2TDEA。但是当我使用16byte密钥时,CCCrypt()失败。该怎么办?

result = CCCrypt(kCCEncrypt, 
                 kCCAlgorithm3DES, 
                 kCCOptionPKCS7Padding | kCCOptionECBMode, 
                 desKey, 
                 24, 
                 nil,
                 dataBlock, 
                 dataBlockSize, 
                 outputData.mutableBytes, 
                 outputData.length, 
                 &outLength); 
ios objective-c 3des commoncrypto
1个回答
0
投票

免责声明

将阅读此内容的任何人:

它是obsolete, deprecated and not secure

3DES和2TDEA

三重DES = 3DES,TDES,TDEA,三重DEA。它有许多名称,但是所有名称都引用相同的密码。这是对每个数据块应用了三次的DES。

您可以访问Wikipedia上的Triple DES文章以了解更多信息。存在几个Keying options,您对第二个感兴趣:

K 1和K 2是独立的,并且K 3 = K 1。有时称为2TDEA或双长度键。 这提供了较短的112位密钥长度,并且合理 相同的警告说明,在DES和键控选项1之间达成妥协 如上。这是对“双DES”的改进,后者仅 需要256步来攻击。 NIST已弃用此选项。

您有16个字节(K 1,K 2)。此键控选项表示K 3 = K 1。这意味着您必须复制前8个字节并附加它们。

  • AAAAAAAA11111111(16个字节,K 1,K 2
  • AAAAAAAA11111111????????(24个字节,K 1,K 2,K 3?)
  • AAAAAAAA11111111AAAAAAAA(24个字节,K 1,K 2,K 3,其中K 3 = K 1)]
© www.soinside.com 2019 - 2024. All rights reserved.