2010-05-19 45 views
1

當我使用C#實現AES對稱加密密碼,我注意到:加密算法是否需要內部哈希算法?

PasswordDeriveBytes derivedPassword = new PasswordDeriveBytes(password, saltBytesArray, hashAlgorithmName, numPasswordIterations); 

爲什麼我需要使用AES加密哈希算法?他們不是分開嗎?或者哈希算法僅用於創建安全密鑰?

AES算法在內部不使用散列算法嗎?

回答

2

PasswordDeriveBytes不是AES的一部分。它實現了一個從密碼派生加密密鑰的算法。該算法涉及哈希算法的使用。

0

PasswordDeriveBytes用於導出對稱密鑰以及您將用於加密/解密的IV。 PasswordDeriveBytes會拿一個密碼(在你的情況下是密碼),附加salt(saltBytesArray在你的情況下)並且散列它(用你提供的算法,例如SHA或MD5)'n'多次(在你的情況下是numPasswordIterations)你的resulatant字節數組。

此方法僅用於派生密鑰,這與加密解密無關。