KeyDerivation.Pbkdf2和Rfc2898DeriveBytes有什么区别?

问题描述 投票:1回答:1

MSDN中的密钥派生:

使用PBKDF2算法执行密钥派生。

MSDN中的Rfc2898DeriveBytes:

通过使用基于HMACSHA1的伪随机数生成器实现基于密码的密钥派生功能PBKDF2。

不是同样的东西吗?我们可以在两种方法中设置哈希算法。

c# security .net-core hash
1个回答
0
投票

两个函数都做同样的事情(当两个函数都使用相同的参数时,它们会生成相同的加密密钥)。

它们设计上的唯一区别是,Rfc2898DeriveBytes提供了更多的加密算法,而KeyDerivation提供了更少的加密算法,这也是需要下载的软件包。 (除非我没有记错,否则仅预先安装在ASP.NET/ASP.NET Core中。)

[从性能角度来看(基准是我自己的),在某一点KeyDerivation快得多,尤其是在[[SHA-1计算中,但是连续测试10到15分钟后,它们似乎变得均匀了,所以我不能说哪个更有效。我可以说的是,您需要为Rfc2898DeriveBytes分配额外的资源,您可以立即将其分配或在应用程序的整个生命周期中重新使用,而KeyDerivation的使用不需要任何仪式。当然,这是以其有限的算法为代价的。

[如果您不断处置和实例化新的Rfc2898DeriveBytes(不重复使用),我相信KeyDerivation会快得多。 (我的基准测试显示速度降低了50%。)
© www.soinside.com 2019 - 2024. All rights reserved.