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%。