2011-10-14 56 views
4

我正在使用CCCrypt方法。對於使用CCCrypt()的AES128,密鑰是否可以超過128位?

我可以使用比128bit更長的密鑰嗎?它可以任意長嗎?或者可能是128的倍數?

如果是的話我該怎麼做?

我不認爲這woas可能的,但我發現這樣的文字:here

一些算法,如AES和RSA允許不同長度的鑰匙,但其他人都是固定的,如DES和3DES。使用更長的密鑰進行加密通常意味着對郵件恢復的抵抗力更強。像往常一樣,在安全和時間之間進行權衡,所以適當選擇密鑰長度。

AES如何允許不同的長度,是否忽略高於128的位?

我把我的頭髮拉出來,任何幫助將不勝感激。

+0

它不會忽略它們,它將它們組合成一個正確尺寸的密鑰 –

回答

7

AES(Advanced Encryption Standard)實際上是三個相關的分組密碼算法(或算法對,如果單獨計算加密和解密)的集合。它們都在128位塊(16字節)上工作。

最常用的是採用128位密鑰(即16字節)的AES-128。 AES-192採用192位密鑰(24字節),AES-256採用256位密鑰(32字節)。

這三種算法類似的工作,但還是不同的方法(和那些更長的密鑰需要更長的時間,因爲他們做更多的內部混亂運作的「發」,所以鑰匙的所有位可以以某種方式影響所有密文的比特)。因此,所有這些算法的所有這些密鑰都以不同的方式加密和解密(即不存在與AES-128密鑰相同的AES-256密鑰)。如果說,我不知道CommonCrypto庫是否支持AES的所有變體,如果是(我想是),如何選擇正確的。

+0

我知道這是舊的,但對於其他人來說,我使用CommonCrypto for AES128 256字節的密鑰,並使用了128字節的密鑰。所以我認爲192字節鍵也可以。 – slycrel

+1

@slycrel我不知道你做了什麼(或者CommonCrypto-API做什麼),但是AES-128只需要128位密鑰。帶有256位密鑰的版本被命名爲AES-256,帶有192位密鑰的版本被命名爲AES-192。 –

+0

也許我誤解了某些東西,或者錯誤地陳述了......我認爲AES總是128位,具有不同的密鑰大小。不是我的原始資料,但是這是一個很好的文章:http://blog.agilebits.com/2013/03/09/guess-why-were-moving-to-256-bit-aes-keys/所以可能只是一個術語的東西。如果是這樣,我的道歉。 – slycrel

5

Paulo說明非常好!而不是在主題;-)

現在就擺在iOS的背景下這方面的知識蘋果文檔好得多......你需要知道cccrypt(就像它在頁命名),通常命名爲CommonCrypto(可方便您的搜索)在網站的其他地方。

然而,直到你意識到這部分是open source software並且確實缺乏文檔,你纔會發現很多東西。

但是,一旦你發現這一點,你可以搜索直通源代碼中查找CommonCrypto.h發現可以用枚舉,其中包括:kCCKeySizeAES128kCCKeySizeAES192kCCKeySizeAES256 - 所以可以使用在iOS上使用AES的256位密鑰。

相關問題