Я пытаюсь реализовать режим шифрования AES OFB с использованием библиотеки pycryptodome, и у меня возникают проблемы с пониманием того, что вводить в шифр. Я знаю, что в pycryptodome уже реализовано OFB, но мне нужно взять простой текст, разбить его на байты, применить соответствующие шаги OFB, чтобы зашифровать его с помощью шифра AES в режиме ECB, а затем расшифровать.
Как работают байтовые строки, такие как b'\x16\xa8W\xed.)\xc4\xb8x\xd6\xcf\x7f\xf3\xe3;^'
в Python?
Мне нужно взять такую строку байтов, зашифровать ее, затем разбить ее пополам и XOR с 8 байтами простого текста. Самый простой способ для меня понять и сделать это - зашифровать IV (байтовую строку сверху) с помощью AES, затем преобразовать его и простой текст в двоичный файл и переписать их, а затем преобразовать обратно в байтовые строки. Как я могу это сделать?
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
plainText = b"Lorem ipsum dolor sit amet, consectetur adipiscing e"
key = b"ANAAREMEREAAAAAA"
iv = get_random_bytes(32)
print("iv: ", iv)
cipher = AES.new(key, AES.MODE_ECB)
toXor = cipher.encrypt(iv)
print("toXor: ", toXor)
"""
toXorF=first half of toXor
ivS=second half of iv
cipherText=toXorF xored to first 8 bytes of plainText
iv=ivS + toXorS
"""
Вывод отпечатков:
iv: b"v'xg;\xd7h\xfc\xf2\xa4[\r\xee]J\x1eu\xa5\xe68\xa3a\xde\x02(\xc1\xe0\xc9z\x0f\xc3n"
toXor: b'\x97\xbex\xfc\xb6\xbb\x85\xccZ\xc4\xe4\x9d\xd6M\xf2\xd7\xb7\xbf\xd0\xbe\xa5A\xd6\xee\x07U\xe0S\x7f\x88\xea\xcd'
Если у вас есть предложения по улучшению архитектуры моей программы / подхода к моей проблеме, не стесняйтесь просветить меня.