Почему не получается расшифровать текст? >>> bs = AES.block_size
>>> pad = lambda s: s + (bs - len(s) % bs) * chr(bs - len(s) % bs)
>>> key = "password1234".encode() # to bytes
>>> aes_1 = AES.new(md5(key).digest(), AES.MODE_CFB, bytes([random.randint(0,0xFF) for i in range(16)]))
>>> aes_2 = AES.new(md5(key).digest(), AES.MODE_CFB, bytes([random.randint(0,0xFF) for i in range(16)]))
>>> d_text = pad("texttexttexttext blablablah")
>>> e_text = aes_1.encrypt(d_text)
>>> aes_1.decrypt(e_text)
b'\n\xce\x85\xeb\x8aK-\xd6\xbe\x9e\xafj;\xf9\x1e. blablablah\x05\x05\x05\x05\x05'
>>> aes_2.decrypt(e_text)
b'texttexttexttext blablablah\x05\x05\x05\x05\x05'
Вопрос: почему aes_1, которым текст был зашифрован, не смог этот текст расшифровать, а aes_2 смог? Все кроме начального вектора у них одинаковое, т.е что-бы расшифровать текст - IV нужно рандомизировать? Почему тогда нигде об этом не написано? Или так плохо читал/гуглил?
UPD: погугил еще, почитал о режимах подробнее, понял почему не получается расшировать, попробовал еще раз - теперь и aes_1 и aes_2 выдает мусор вместо текста. ЧЯДНТ?

21 Авг 2019 в 07:14
216 +1
0
Ответы
1

Проблема здесь заключается в том, что режим шифрования CFB (Cipher Feedback) нужно использовать правильно для корректного расшифровывания текста. В режиме CFB данные шифруются блоками, и исходный текст должен быть зашифрован и расшифрован с использованием одного и того же начального вектора (IV).

В вашем примере вы создаете два объекта AES с различными начальными векторами, что приводит к неправильной расшифровке текста. Решением этой проблемы будет использование одного и того же начального вектора для шифрования и расшифрования, а также проверка правильной длины текста перед расшифровкой.

Поэтому, перед тем как шифровать текст, убедитесь, что используете один и тот же начальный вектор для объектов AES. Возможно, стоит также обратить внимание на другие режимы шифрования, такие как CBC, который может быть более подходящим для ваших целей.

20 Апр в 13:05
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 989 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир