这是什么样的加密?

时间:2012-05-16 21:46:33

标签: objective-c encryption

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

让我感到困惑的是Key Size是256,但算法和块大小是128.那么库使用哪种加密方式,为什么它们不同?

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

4 个答案:

答案 0 :(得分:3)

这就是AES的工作原理 - 无论密钥大小如何,块大小都是128。这并不意味着它只使用128位密钥。 Wikipedia article

中的完整信息

答案 1 :(得分:3)

AES仅支持128位的块大小。它所基于的Rijndael确实支持不同的块大小。 AES-128,192和256之间存在一些差异(子密钥推导可能特定于密钥大小且轮数不同),但基础算法是相同的,并且始终使用128位(16字节)块

答案 2 :(得分:3)

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

AES是一种块密码,无论密钥大小如何,都使用128位块。因此,kCCAlgorithmAES128通常只是AES的“慢手”。

因此,代码表明它使用的是带有256位加密密钥的标准AES。

答案 3 :(得分:2)

AES标准(FIPS-197)(不仅仅是Rijndael算法)声明:

  

本标准规定了 Rijndael 算法([3]和[4]),一种对称分组密码,可以   使用密码密钥处理 128位数据块,长度 128 192 256 位。   Rijndael旨在处理额外的块大小和密钥长度,但它们不是   本标准采用。