2011-05-25 22 views
13

深入研究java加密和哈希世界,我看到PBEKeySpec類的構造函數的示例,其中iterationCountkeyLength參數的值各不相同。似乎沒有什麼能夠解釋這些參數的影響或意義。PBEKeySpec iterationCount和keyLength參數有什麼影響?

我假設keyLength是關鍵字的長度,所以32位加密對於關鍵字長度來說需要32的值,但是這種假設感覺不對。我對iterationCount的猜測是每個字符被加密的次數,再次也沒有在那個假設上感受到愛。

鏈接到信息或解釋讚賞。

回答

22

迭代次數是在推導對稱密鑰期間密碼被哈希的次數。數字越高,蠻力就越難。它與用來防止使用彩虹桌的攻擊的鹽一起使用。

密鑰長度是派生對稱密鑰的長度。 DESede密鑰可以是128位或192位長(包括奇偶校驗位)。 AES密鑰可以是128,192或256位長。問題在於API沒有指定哪個密鑰長度(通常是位,並且包括Java API中的奇偶校驗信息)。

密鑰派生函數通常只輸出「足夠」的隨機位,所以您仍然可以指定所需的密鑰大小。

注意:對於通常使用PBEKeySpec的PBKDF2函數,請看in the standard,PKCS標準通常比較容易閱讀。

+0

請注意,現在rsa.com的鏈接已損壞; 「標準」是指PKCS#5 v2.0,AKA [RFC 2898](https://tools.ietf.org/html/rfc2898)。 – jbyler 2014-05-21 19:26:09

+0

@jbyler隨時編輯答案,我編輯了新的參考。 – 2014-05-22 09:14:05

+0

啊,謝謝@owlstead的提示。我會在下一次做。 – jbyler 2014-05-22 18:21:02

相關問題