Я делаю программу, которая шифрует текст с помощью пакета 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