KeyDerivation.Pbkdf2和Rfc2898DeriveBytes有什么区别?



MSDN 中的 KeyDerivation:

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

MSDN 中的 Rfc2898DeriveBytes:

通过使用基于

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

这些不就是一回事吗?我们可以在这两种方法中设置哈希算法。

这两个函数执行相同的操作(当都使用相同的参数时,它们会生成相同的加密密钥(。

它们设计的唯一区别是Rfc2898DeriveBytes提供了更多的加密算法,而KeyDerivation提供的算法更少,并且也是一个需要下载的软件包。(仅预装在 ASP.NET/ASP.NET Core 中,除非我弄错了。

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

如果您不断释放和实例化新Rfc2898DeriveBytes(不重复使用,由于无法更改提供的密码,这是 90% 的时间(,我相信KeyDerivation要快得多。(我的基准测试显示速度损失了 50%。

相关内容

  • 没有找到相关文章

最新更新