Рассмотрим два кода ниже (на основе http://pythonhosted.org//pycrypto/):DES.MODE_OFB не восстанавливает исходный текст
1) DES.MODE_ECB
from Crypto.Cipher import DES
from Crypto import Random
key = b'Eight888'
cipher = DES.new(key, DES.MODE_ECB)
plaintext = b'sona si latine loqueris '
msg = cipher.encrypt(plaintext)
msgback= cipher.decrypt(msg)
2) DES.MODE_OFB
from Crypto.Cipher import DES
from Crypto import Random
key = b'Eight888'
iv = Random.new().read(DES.block_size)
cipher = DES.new(key, DES.MODE_OFB, iv)
plaintext = b'sona si latine loqueris '
msg = iv + cipher.encrypt(plaintext)
msgback= cipher.decrypt(msg)
Почему этот код 1) восстанавливает исходный текст и 2) нет?
Почему вы добавляете iv в зашифрованный текст перед его расшифровкой? – Marek
@Marek Предположительно, потому что 'msg' должен быть отправлен где-то, и IV должен быть доставлен вместе с ним для дешифрования. –
@ Арджом Б. Да, понял. Он просто выходит за рамки фактического фрагмента шифрования/дешифрования выше. – Marek