加密算法是否需要内部散列算法?

时间:2010-05-19 23:51:37

标签: c# encryption cryptography hash aes

当我使用C#实现AES对称加密密码时,我注意到:

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

为什么我需要使用散列算法进行AES加密?他们不是分开吗?或者哈希算法仅用于创建安全密钥?

AES算法内部不使用散列算法吗?

2 个答案:

答案 0 :(得分:2)

PasswordDeriveBytes不是AES的一部分。它实现了一种从密码派生加密密钥的算法。该算法涉及使用散列算法。

答案 1 :(得分:0)

PasswordDeriveBytes 用于派生对称密钥以及您将用于加密/解密的IV。 PasswordDeriveBytes将采用密钥(在您的情况下为密码),附加salt(在您的情况下为saltBytesArray)并将其(使用您提供的算法,例如SHA或MD5)哈希(n)多次(在您的情况下为numPasswordIterations)并给出你是resulatant字节数组。

此方法仅用于派生密钥,这与加密解密无关。