当我使用C#实现AES对称加密密码时,我注意到:
PasswordDeriveBytes derivedPassword = new PasswordDeriveBytes(password, saltBytesArray, hashAlgorithmName, numPasswordIterations);
为什么我需要使用散列算法进行AES加密?他们不是分开吗?或者哈希算法仅用于创建安全密钥?
AES算法内部不使用散列算法吗?
答案 0 :(得分:2)
PasswordDeriveBytes不是AES的一部分。它实现了一种从密码派生加密密钥的算法。该算法涉及使用散列算法。
答案 1 :(得分:0)
PasswordDeriveBytes 用于派生对称密钥以及您将用于加密/解密的IV。 PasswordDeriveBytes将采用密钥(在您的情况下为密码),附加salt(在您的情况下为saltBytesArray)并将其(使用您提供的算法,例如SHA或MD5)哈希(n)多次(在您的情况下为numPasswordIterations)并给出你是resulatant字节数组。
此方法仅用于派生密钥,这与加密解密无关。