Получение TypeError при попытке создать новый шифр AES в Python3 - PullRequest
0 голосов
/ 18 марта 2019

Только что установлен PyCryptodome в Pycharm. У меня есть 3 строки кода. Я пытаюсь дать жесткую iv и ключевую ценность для функции AES. Это бросает это:

  File "C:\Users\user\PycharmProjects\CS\venv\lib\site-packages\Crypto\Cipher\AES.py", line 92, in _create_base_cipher
if len(key) not in key_size:
TypeError: object of type 'int' has no len()

Вот мой код.

iv = 0x0008739a3043314e614c4b764f234189
key = 0xf188c2f6176502368ab346a0b40f1098ed350c3c46595e998147ab1db9d865b7
cipher = AES.new(key, AES.MODE_CBC, iv)

Я попытался преобразовать в двоичный файл, но затем я получил неправильную длину ключа AES (258)

iv = 0x0008739a3043314e614c4b764f234189
biv = bin(iv)
key = 0xf188c2f6176502368ab346a0b40f1098ed350c3c46595e998147ab1db9d865b7
bkey = bin(key)

cipher = AES.new(bkey, AES.MODE_CBC, biv)    


ValueError: Incorrect AES key length (258 bytes)

1 Ответ

1 голос
/ 18 марта 2019

Ключ должен быть в байтах.Чтобы преобразовать целое число в байты:

key = 0xf188c2f6176502368ab346a0b40f1098ed350c3c46595e998147ab1db9d865b7
bkey = key.to_bytes(32, 'big')
>>> bkey
b'\xf1\x88\xc2\xf6\x17e\x026\x8a\xb3F\xa0\xb4\x0f\x10\x98\xed5\x0c<FY^\x99\x81G\xab\x1d\xb9\xd8e\xb7'

Обратите внимание, что bin() преобразует целое число в строку, представляющую число в виде последовательности символов «0» и «1», что не оченьиспользуйте здесь.

...