Просто переместите obj2 = AES.new(key, AES.MODE_CBC, iv)
в while l oop. Не волнуйтесь, зашифрованные объекты - это не очень объекты с отслеживанием состояния; они ничего не делают, кроме как хранить ключ (или, для AES, возможно, внутренние подключи) и поддерживать небольшой буфер. Поэтому, как правило, повторное использование или кэширование - плохая идея.
Если вы вызываете encrypt / decrypt несколько раз подряд, тогда методы действуют так, как если бы вы шифровали одно большое сообщение. Другими словами, они позволяют шифрование / дешифрование по частям, так что можно избежать буферов размером с сообщение. Это не очень явно задокументировано, но вы можете увидеть это на рис. 2 в документации .
Для режима CB C это означает, что операция идентична установке IV для последний блок зашифрованного текста. Если IV неверен, то первый блок открытого текста будет рандомизирован. Случайные байты обычно не содержат допустимой кодировки UTF-8, что означает, что декодирование в строку (скорее всего) не удастся.