2

我正在使用 AES (Rijndael) 对称密钥算法来加密-解密数据。我正在使用 System.Security.Cryptography。PasswordDeriveBytes 函数;

        PasswordDeriveBytes password = new PasswordDeriveBytes(
                                                        passPhrase,
                                                        saltValueBytes,
                                                        hashAlgorithm,
                                                        passwordIterations);

在 MSDN 等上查看此函数,它并没有明确告诉您“hashAlgoritm”可以采用哪些参数。互联网上有使用 SHA1 和 SHA256 的示例。我对此进行了实验,发现它可以采用 SHA512。但是没有文档,我不知道 SHA512 是否真的比 SHA256 或 SHA1 甚至 MD5 更好。任何人都可以阐明这个问题吗?

4

1 回答 1

3

散列方法的安全性对于密钥派生函数来说不太重要。最好选择与所需密钥大小匹配的密钥,尽管通常不鼓励使用 MD5。其他应用程序可能只使用 SHA-1 。

请注意,它PasswordDeriveBytes已被弃用,当然不应该用于大于散列大小的输出。改为使用 PBKDF2,请参阅Rfc2898DeriveBytes.

于 2013-02-25T17:14:27.670 回答