Как превратить элементы в массиве в байты для хеширования? - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь получить sh пользовательский ввод, который вводится с помощью простого gui. Easy gui сохраняет ввод в массив (я думаю), поэтому, когда я пытаюсь получить sh пользовательский ввод, я не уверен, как превратить его в байт.

Вот мой код:

import hashlib
import easygui


g = hashlib.sha256(b'helloworld').hexdigest()

l = easygui.enterbox('enter password')

f = hashlib.sha256([l]).hexdigest()

print(g)
print(f)

в идеале, если я наберу 'helloworld' в easy gui, он должен вернуть тот же хешированный вывод.

В настоящее время ошибка:

"TypeError: object supporting the buffer API required" at the line f = haslib.sha256([l]).hexdigest()

Ответы [ 2 ]

2 голосов
/ 01 марта 2020

easygui.enterbox возвращает текст, введенный пользователем, или None, если он отменяет операцию. Вам придется преобразовать текст, возвращенный в байтовый массив. Документы

if l is not None:
    f = hashlib.sha256(l.encode()).hexdigest()
1 голос
/ 01 марта 2020

Вы должны закодировать ваш заданный bevor строки, вы можете sh это. Самым простым способом было бы, просто использовать для строк реализованный метод encode ().

f = hashlib.sha256(l.encode()).hexdigest() print(f)

с возвратом вашего sha256 га sh.

...