我想知道为什么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
答案 0 :(得分:2)
数字的二进制表示形式不包括前导零。正如str(1)
和str(11)
的长度不同,因为它们不会将前导零填充到固定长度。