【发布时间】:2015-02-07 18:04:49
【问题描述】:
我正在尝试理解这个密钥派生函数,我有一些问题
1) 在 C# 中,似乎 Rfc2898DeriveBytes 使用 SHA1 实现它,但我想尝试使用 SHA512 来提高安全性。如何在 C# 中将 SHA512 用于 PBKDF2?
2) 我读过关于哈希冲突的文章,但我还不明白,那么盐和哈希的正确长度是多少才能获得良好的安全性?
【问题讨论】:
-
您所做的哪些研究表明,在通过 SHA1 执行密钥派生函数时,执行 SHA512 会为您提供更好的安全性?适用于 SHA1 与 SHA512 的所有弱点均不适用于此处的使用方式。
-
哦,对不起,我没有进行任何研究,但是 SHA1 使用 20 字节,SHA512 使用 64,PBKDF2 有你决定的长度,但我读到你不能选择随机长度,因为你必须取你的 Salt 长度考虑到因为有一种叫做碰撞的东西。所以我在这里有点困惑。也许不是更安全的 SHA512 但有更多字节作为输出,我认为这会迫使你使用更大的 PBKDF2 长度,这对我来说似乎更安全。