我在特洛伊·亨特(Troy Hunt)的博客(https://www.troyhunt.com/ive-just-launched-pwned-passwords-version-2/)中阅读了一篇有关“ Pwned Passwords”功能的检查,该功能可检查您的密码是否为数据库中有超过十亿个泄露的密码。
要执行此检查而不传递密码,客户端代码对其进行哈希处理并仅传递此哈希的前五个字符,则后端将返回所有以您传递的前缀开头的密码的sha1哈希。然后,要检查密码的哈希是否在数据库中,请在客户端代码上进行比较。
然后他放了一些有关这些哈希密码的数据的信息...
- 从00000到FFFFF的每个哈希前缀都填充有数据(16 ^ 5个组合)
- 返回的平均哈希数为478
- 最小的是381(哈希前缀“ E0812”和“ E613D”)
- 最大的是584(哈希前缀“ 00000”和“ 4A4E8”)
在评论中,人们想知道这个“ 00000”的出现是巧合还是数学。
可以理解SHA1算法的人可以向我们解释它吗?
有人将需要根据sha1算法检查我的猜测(并且troy可能已经对它进行了揭穿,因为根据他的博客回答,他“在[纯文本]密码上达到了顶峰),但是由于密码只是字母/数字和有限的符号,因此以ASCII形式描述的创建散列将始终以零位开始工作(ascii为0-255,但我相信所使用的字母数字和符号在32-98范围内,因此每8位的第一位始终为零),而同时是哈希函数的功能,我怀疑可预测的位定位并不像人们期望的那样难混淆。虽然它与4关联,但0是位形式的00000000,而4是00000100,所以两者都具有前五个位0,
还请注意,两个最不频繁的哈希标头均以E开头,二进制形式为11111110,因此它们在构造(1与0)和频率(低与高)方面几乎完全相反,这意味着零位的存在可能是一面。完全(怀疑)算法的功能或算法功能对约定偏斜的有限子集的影响,换句话说,字母和数字仅占ASCII所描绘的最大范围的1/3-1/4。
当然,我们可以在这个会议上使用“锡箔纸帽子”,但我敢打赌,巧合和ASCII比那个男人在草地上要怪多
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句