У меня был скрипт в Python2, который отлично работал.
def _generate_signature(data):
return hmac.new('key', data, hashlib.sha256).hexdigest()
Где данные были результатом json.dumps
.
Теперь, если я попытаюсь запустить такой же код в Python 3, я получаю следующее:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.4/hmac.py", line 144, in new
return HMAC(key, msg, digestmod)
File "/usr/lib/python3.4/hmac.py", line 42, in __init__
raise TypeError("key: expected bytes or bytearray, but got %r" %type(key).__name__)
TypeError: key: expected bytes or bytearray, but got 'str'
Если я попробую что-то вроде преобразования ключа в байты следующим образом:
bytes('key')
я получил
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: string argument without an encoding
Я все еще пытаюсь понять кодировки в Python 3.