MSDN中的密钥派生:
使用PBKDF2算法执行密钥派生。
MSDN中的Rfc2898DeriveBytes:
通过使用基于HMACSHA1的伪随机数生成器实现基于密码的密钥派生功能PBKDF2。
不是同样的东西吗?我们可以在两种方法中设置哈希算法。
两个函数都做同样的事情(当两个函数都使用相同的参数时,它们会生成相同的加密密钥)。
它们设计上的唯一区别是,Rfc2898DeriveBytes
提供了更多的加密算法,而KeyDerivation
提供了更少的加密算法,这也是需要下载的软件包。 (除非我没有记错,否则仅预先安装在ASP.NET/ASP.NET Core中。)
[从性能角度来看(基准是我自己的),在某一点KeyDerivation
快得多,尤其是在[[SHA-1计算中,但是连续测试10到15分钟后,它们似乎变得均匀了,所以我不能说哪个更有效。我可以说的是,您需要为Rfc2898DeriveBytes
分配额外的资源,您可以立即将其分配或在应用程序的整个生命周期中重新使用,而KeyDerivation
的使用不需要任何仪式。当然,这是以其有限的算法为代价的。
Rfc2898DeriveBytes
(不重复使用),我相信KeyDerivation
会快得多。 (我的基准测试显示速度降低了50%。)