首页 > 解决方案 > 哈希算法(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

标签: pythonhashbinary

解决方案


数字的二进制表示不包括前导零。正如str(1)str(11)是不同的长度,因为它们不会用前导零填充到固定长度。


推荐阅读