2012-05-16 45 views
0

我在我的iOS应用程序中使用了一个开源加密库,其描述中指出它是AES 256位加密。这是否意味着只有密钥大小是AES 256位?这是什么样的加密?

让我感到困惑的是,密钥大小是256,但算法和块大小是128.那么库使用哪种类型的加密以及它们为什么不同?

#define FBENCRYPT_ALGORITHM  kCCAlgorithmAES128 
#define FBENCRYPT_BLOCK_SIZE kCCBlockSizeAES128 
#define FBENCRYPT_KEY_SIZE  kCCKeySizeAES256 
+0

4从有> 3K的经验的人,一分钟的答案必须是加密标签的记录:) –

+1

@owlstead答案一致,不能少于。我们应该互相赞成吗? :-) –

+0

@ConradShultz完成:-) –

回答

3

这些常量在CommonCryptor.h中声明,其中包含有用的注释。

AES是一种使用128位块的块密码,与密钥大小无关。因此,对于AES来说,kCCAlgorithmAES128只是“长效”的。

所以,代码表明它使用标准的AES和256位加密密钥。

3

这就是AES的工作方式 - 无论密钥大小如何,块大小都是128。这并不意味着它只使用128位密钥。全部信息在Wikipedia article

2

AES标准(FIPS-197)(未刚刚Rijndael算法)规定:

此标准规定了的Rijndael算法([3]和[4]),对称块密码,可以 过程数据块的128位,使用加密密钥的长度,,和256位位。 Rijndael设计用于处理额外的块大小和密钥长度,但它们不是在本标准中采用的 。

3

AES只支持128位的块大小。 Rijndael基于它支持不同的块大小。 AES-128,192和256之间有一些区别(子密钥派生可能是特定于密钥大小和轮回次数的不同),但底层算法是相同的,并且始终使用128位(16字节)的块。