2012-05-16 44 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字節)的塊。