Hash 在相同的哈希算法中,时间差的原因是什么?

Hash 在相同的哈希算法中,时间差的原因是什么?,hash,hmac,password-encryption,pbkdf2,Hash,Hmac,Password Encryption,Pbkdf2,我在Codeproject中读过这篇文章: 盐渍密码散列正确操作。 我知道asp.net webforms的最佳哈希算法是PBKDF2-HMAC-SHA512。然后是github实现: 它基于PBKDF2-HMAC-SHA1 我在谷歌上找到了一些东西,可以帮助我基于PBKDF2-HMAC-SHA512创建哈希 我在github上找到了这个库: 在这个库中,我可以定义我的哈希算法,如HMACSHA1、HMACSHA256、HMACSHA384或HMACSHA512 正如您所知,HMACSHA1

我在Codeproject中读过这篇文章:

盐渍密码散列正确操作。

我知道asp.net webforms的最佳哈希算法是PBKDF2-HMAC-SHA512。然后是github实现:

它基于PBKDF2-HMAC-SHA1

我在谷歌上找到了一些东西,可以帮助我基于PBKDF2-HMAC-SHA512创建哈希

我在github上找到了这个库:

在这个库中,我可以定义我的哈希算法,如HMACSHA1HMACSHA256HMACSHA384HMACSHA512

正如您所知,HMACSHA1HMACSHA512更快。而且出于安全原因,这也不好

但我发现了一些我不知道是真是假的东西!我在同一页中实现了这两种算法,并且知道adriancs的算法比mike的算法耗时更长。阿德里安克斯的文章也不符合逻辑

所以,我想知道哪个算法最慢,哪个更好

任何帮助都将不胜感激


非常感谢。

很抱歉这么晚才发现。我是PBKDF2.NET的作者。速度差异是由于相等比较造成的。Defuse库实现了一个慢速比较函数,我选择将任何自定义比较留给使用者。我的理由是,我不想创建一个包含其他非必要实用函数的库,而是提供算法的正确实现。某个特定的应用程序是否需要慢速比较实际上取决于该应用程序,因此我排除了这一点。

工作系数(迭代)是否相同?用同一种语言比较时间?不同的语言有不同的效率。两个迭代都是相同的。我用相同的值测试了两个库:salt size 64。散列字节22。迭代64000。不同的语言,它们的测试时间是多少?不,都是用C写的。另外,最快的方法是使用BufferCopy方法。可能是时差的原因吗?!在任何情况下,concerpt都有一个大约需要100ms的舍入值。