对于使用CCCrypt()的AES128,密钥可以长于128位吗?

Rob*_*ert 5 cryptography aes ios commoncrypto

我正在使用这种CCCrypt方法.

我可以使用比128bit更长的密钥吗?可以任意长吗?或者可能是128的倍数?

如果是这样,我该怎么做?

我没有想到这可能,但我找到了这个文字:这里

某些算法(如AES和RSA)允许使用不同长度的密钥,但其他算法是固定的,例如DES和3DES.使用较长密钥进行加密通常意味着对邮件恢复的抵抗力更强.像往常一样,安全性和时间之间存在权衡,因此请适当选择密钥长度.

AES如何允许不同的长度,它是否忽略高于128的位?

我把头发拉出来,任何帮助将不胜感激.

Paŭ*_*ann 7

AES(高级加密标准)实际上是三个相关分组密码算法(或算法对,如果单独计算加密和解密)的集合.它们都工作在128位块(16字节)上.

最常用的是AES-128,它采用128位密钥(即16字节).AES-192采用192位密钥(24字节),AES-256采用256位密钥(32字节).

这三种算法的工作方式类似,但仍然不同(较长的密钥需要更长的时间,因为它们会对内部混淆操作进行更多的"回合",因此密钥的所有位都会以某种方式影响密文的所有位).因此,所有这些算法的所有这些密钥都以不同方式加密和解密(即没有AES-256密钥与AES-128密钥完全相同).

也就是说,遗憾的是,我不知道CommonCrypto库是否支持AES的所有变体,如果是(我想的话),如何选择正确的.


pou*_*pou 5

保罗解释非常好!并且比关于这个主题的Apple文档要好得多;-)

现在将这些知识放在iOS上下文中......您需要知道cccrypt(就像在手册页中命名的)通常在网站的其他地方命名为CommonCrypto(可以方便您的搜索).

然而,在你意识到这部分是开源软件并且真的缺乏文档之前你不会发现太多.

但是,一旦你找到这个你可以直通源代码中找到搜索CommonCrypto.h探索:您可以使用枚举,其中包括kCCKeySizeAES128,kCCKeySizeAES192kCCKeySizeAES256等等- 您可以使用 iOS上的256位密钥的AES.