为什么哈希(SHA1)密码最常见的前缀是“ 00000”?

lmcarreiro

我在特洛伊·亨特(Troy Hunt)的博客(https://www.troyhunt.com/ive-just-launched-pwned-passwords-version-2/中阅读了一篇有关“ Pwned Passwords”功能的检查,该功能可检查您的密码是否为数据库中有超过十亿个泄露的密码。

要执行此检查而不传递密码,客户端代码对其进行哈希处理并仅传递此哈希的前五个字符,则后端将返回所有以您传递的前缀开头的密码的sha1哈希。然后,要检查密码的哈希是否在数据库中,请在客户端代码上进行比较。

然后他放了一些有关这些哈希密码的数据的信息...

  1. 从00000到FFFFF的每个哈希前缀都填充有数据(16 ^ 5个组合)
  2. 返回的平均哈希数为478
  3. 最小的是381(哈希前缀“ E0812”和“ E613D”)
  4. 最大的是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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Hadoop中的part-r-00000和part-m-00000文件有什么区别?

为什么hadoop输出文件part-r-00000为空

为什么只有代码块给我返回错误(0xc00000FD)?

线程1:EXC_BAD_ACCESS(代码= 1,地址= 0xf00000c)

向联合分配类似{0x7fc00000}的东西是什么意思?

在TensorFlow中保存后生成的.index和.data-00000-of-00001文件代表什么?

0xC00000FD(堆栈溢出)错误的参数是什么?

张量流模型:.data-00000-of-00002和.data-00001-of-00002有什么区别?

如何在VB.Net中制作带有00000的+1

01847. 00000-“月份中的某天必须在1到月份中的最后一天之间”

如何使用银行程序在XCODE中修复线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x7ffeefc00000)?

xxx.exe中0x77aa1f38的未处理异常:0xC00000FD:堆栈溢出

查找最常见的哈希值

PDO未插入-错误代码00000

ORACLE 01843. 00000-“无效月份”

01403. 00000-“未找到数据”

查找最常见的财产-密码

vb.net,如何验证SHA1哈希密码?

为什么Redis在计算脚本的SHA1哈希之前要修剪尾随空白?

为什么 OpenSSL 会在我的终端中返回不同的 SHA1 哈希输出?

为什么package-lock.json将完整性哈希值从sha1更改为sha512?

SAML令牌:为什么要使用多种哈希/摘要算法:sha256和sha1?

SHA1 哈希澄清

查找SHA1哈希列最快的方法是什么?

SQL字符串'00000'显示为'0'

0x00000f 安装 arch 后启动 windows

APPCRASH StackOverflowException clr.dll c00000fd

SQL Server 等效于 TO_CHAR('STH', '00000')

Windows 服务中的 Stackoverflow 异常 (0xc00000fd)