Случайная шестнадцатеричная строка получает 'none', когда sha256 в python - PullRequest
0 голосов
/ 30 января 2020

Не могли бы вы помочь мне понять такую ​​простую тему. Мне нужно создать серию ie случайных шестнадцатеричных строк, для которых я использую:

import secrets
x = secrets.token_hex(32)

Это дает мне что-то вроде этого: 1008 *

Что совершенно нормально. Теперь мне нужно передать его через SHA256 га sh, для которого я использую:

h = hashlib.new('sha256')
print (h.update(x))

Получение ошибки:

TypeError: Unicode-objects must be encoded before hashing

Я прочитал, мне нужно закодировать строку перед передачей ha sh с использованием .encode (), получая совершенно странный результат:

b'd6d09acbe78c269147803b8c351214a6e5f39093ca315c47e1126360d0df5369 '

, как результат' none *1021*, и ни как результат, ни как none 1030 *.

Подскажите, пожалуйста, что здесь происходит.

Большое спасибо.

1 Ответ

0 голосов
/ 30 января 2020

Вы пытаетесь напечатать вывод h.update (), который будет None, поскольку он ничего не возвращает. Вместо этого используйте

h.update(x.encode())
print(h.hexdigest())

, чтобы распечатать строку ha sh.

...