Простое примечание о CBC против ECB. При шифровании с использованием ECB каждые 128 бит (в зависимости от размера блока) данных шифруются одним и тем же ключом. Если в открытом тексте есть какой-либо шаблон, полученный зашифрованный текст также будет предсказуемым, независимо от того, насколько хорош алгоритм шифрования.
ЕЦБ:
Plain text: aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa
---------------- ---------------- ----------------
Encrypted: bdefjakjapqeiowp bdefjakjapqeiowp bdefjakjapqeiowp
При использовании CBC, первый блок получает XOR'd с IV (вектор инициализации) и шифруется с помощью ключа, и второй блок получает XOR'd с первым блоком и затем зашифрован ключом, третий - вторым. Получающийся в результате шифр менее уязвим для частотного анализа.
This image is taken from Wikimedia Commons, the free media repository
Недостаток заключается в том, что вы не можете распараллелить шифрования/дешифрования, так как вам нужно результат предыдущего блока, так что это может быть медленнее. Но на практике это не имеет никакого значения.
«aes-128» не задает режим, но шифры «aes-128- *» делают. Непонятно, в каком режиме «aes-128» по умолчанию, поэтому сначала вы должны это узнать. –