python - 哈希算法(sha-512)不返回固定长度的位
问题描述
我想知道为什么 sha-512 或 sha-256 函数将在 hashlib 库 Python3.6.x 中返回不固定长度的位
首先,我用 hashlib.sha512 函数改变了像 'aaa' 或 'mov' 这样的字符串。
然后将返回对象设为十六进制,然后将十六进制值更改为二进制。
它在 100000 次中发生 2~3 次。
谁能解释一下?
i1 = h.sha512(b'mov')
num= int(i1.hexdigest(),16)
>>>11775820457324453297447618001055999940741095690927818803951219801773598183145805229667200223221871868971369247216868356532234761527576077269523848115505381
binary = bin(num)
>>>'0b1110000011010111000000101110101100011111100100001000101010011111011000010001101101101100010000110000111101010000001011000010011101110110010110111111011000100011011101000001111001111001111000001101101011100111010110001010110101111011001010100001001111010111000111110110110011110001110010111100110100001111011111000101101110001101001011001001111101111110010011010011111110101011010100101101111011001000011001100000000110101110110110001111110101011101001000011111111101110011001000111110000101111111110010001110010101'
len(binary[2:]) # to remove prefix
>>> 514
解决方案
数字的二进制表示不包括前导零。正如str(1)
和str(11)
是不同的长度,因为它们不会用前导零填充到固定长度。
推荐阅读
- sass - gulp-sass 不产生任何输出
- java - 为什么 Java Collector.toList() 在其返回类型中需要通配符类型占位符?
- javascript - 如何在handsontable的上下文菜单中添加带有默认项目的自定义项目
- python - 在定时嵌套循环中等待用户输入
- php - 防止 PHP 中的文件包含漏洞
- arrays - 如何在 Scala 中编写具有自定义索引范围的有效类数组结构?
- graph-databases - TTL 过期后,JanusGraph 边缘未删除
- javascript - 碰撞检测在吃豆人游戏中不起作用
- arrays - 将结果附加到数组中
- asp.net - 极其奇怪的 Fluent Validation 行为