Алгоритм хеширования (sha-512) не возвращает фиксированную длину бит - PullRequest
0 голосов
/ 26 мая 2019

Мне интересно, почему функция sha-512 или sha-256 будет возвращать биты фиксированной длины в библиотеке hashlib, Python3.6.x

Во-первых, я изменил строку как 'aaa' или 'mov' с помощью функции hashlib.sha512.

затем сделал возвращаемый объект шестнадцатеричным, затем изменил шестнадцатеричное значение на двоичное.

это случается 2 ~ 3 в 100000 раз.

Может кто-нибудь объяснить это?

i1 = h.sha512(b'mov')
num= int(i1.hexdigest(),16)
>>>11775820457324453297447618001055999940741095690927818803951219801773598183145805229667200223221871868971369247216868356532234761527576077269523848115505381

binary = bin(num)
>>>'0b1110000011010111000000101110101100011111100100001000101010011111011000010001101101101100010000110000111101010000001011000010011101110110010110111111011000100011011101000001111001111001111000001101101011100111010110001010110101111011001010100001001111010111000111110110110011110001110010111100110100001111011111000101101110001101001011001001111101111110010011010011111110101011010100101101111011001000011001100000000110101110110110001111110101011101001000011111111101110011001000111110000101111111110010001110010101'

len(binary[2:])   # to remove prefix
>>> 514

1 Ответ

3 голосов
/ 26 мая 2019

Двоичное представление числа не включает начальные нули. Так же, как str(1) и str(11) имеют разную длину, потому что они не дополняются начальными нулями до фиксированной длины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...