MSDN中的KeyDerivation:
使用PBKDF2算法执行密钥派生。
MSDN中的Rfc2898DeriveBytes:
通过使用基于HMACSHA1的伪随机数生成器实现基于密码的密钥派生功能PBKDF2。
这两个方法不是一样的吗?我们可以在两种方法中设置哈希算法。
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%。)