Преобразовать в двоичный - PullRequest
0 голосов
/ 04 марта 2020

Для использования функции HMA C:

hmac.digest(key, msg, digest)

https://docs.python.org/3/library/hmac.html Ключ и msg должны быть в байтах или объекте байтовой матрицы. Ключ и ввод сообщения обычно являются строкой. Я не могу найти способ легко преобразовать прямо из строки в объект bytes / bytearray. Кажется, что сначала вам нужно преобразовать в целое число, а оттуда в байтовый объект. bin(foo) --> str преобразуется только в его двоичное представление, однако вывод bin (input) по-прежнему является строкой, которую функция HMA C не примет. Первым призом было бы найти функцию, которая преобразует мои msg или ключ (строку) непосредственно в байтовый массив или байтовый объект, если нет, чем процесс, чтобы сделать это?

1 Ответ

1 голос
/ 04 марта 2020

Вы можете получить объект байтов строки, вызвав метод кодирования строки. Вы можете указать тип кодировки или оставить его пустым, и он будет использовать кодировку по умолчанию.

import hmac
import hashlib
key = "secret key"
message = "this is a secret message"
digest = hmac.digest(key.encode(), message.encode(), hashlib.sha3_256)
print(digest)

ВЫХОД

b'\xdb3\xdd\xa3\xc48\xbe%"\x97;\xbf\x90\x84E\xd4\x9e\x89g\x12\x0f\'h\xc1\xc4\x95Si\x90A\xbf\xbc'

Подробнее о это здесь https://docs.python.org/3.8/library/stdtypes.html#str .encode . Извлечь ниже

Вернуть закодированную версию строки в виде объекта байтов. Кодировка по умолчанию - utf-8. ошибки могут быть заданы для установки другой схемы обработки ошибок.

...