[当我使用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);
将阅读此内容的任何人:
三重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)]