Генерация случайного ключа в AES с использованием пакета aes python - PullRequest
1 голос
/ 03 апреля 2020

Я делаю программу, которая шифрует текст с помощью пакета aes. Я сгенерировал случайный ключ с использованием secrets.token_bytes (16) и тоже попробовал secretts.token_hex (16).

Но каждый раз, когда я запускаю код, я получаю сообщение об ошибке TypeError: unsupported operand type(s) for >>: 'bytes' and 'int', и эта часть aes пакет показывается

 def __toarray(self, ints):
        if type(ints) == list and len(ints) == 16:
            return ints
        arr = [((ints >> (8 * (15 - i))) & 0xFF) for i in range(16)]

Я не знаю, как я могу это исправить. Есть ли способ генерировать случайный ключ?

Вот так выглядит мой код:

import secrets
import aes

text = "ala ma kota a marysia ma rysia"

key = secrets.token_bytes(16)
key_list = list(key)
key_hex = []
for i in range(len(key_list)):
    key_hex.append(hex(key_list[i])


def padding_and_hex(txt):
    txt_hex = []
    txt_dec = list(txt)
    if len(txt_dec) % 16 != 0:
        for i in range(16 - len(txt_dec) % 16):
            txt_dec.append(0)
        for i in range(len(txt_dec)):
            txt_hex.append(hex(txt_dec[i]))
    return txt_hex


text_to_encrypt = padding_and_hex(text)
how_many_times = int(len(text_to_encrypt)//16)

for i in range(how_many_times):
    cipher = aes.aes(key)
    cipher.encrypt(text_to_encrypt[i:i+16])
    i += 16
...