哈希算法(SHA-512)不返回固定长度的位

时间:2019-05-26 01:27:10

标签: python hash binary

我想知道为什么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

1 个答案:

答案 0 :(得分:2)

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