Добрый вечер
Что-то никак не пойму, как оно должно быть правильно.
Есть PHP, в нем вызываются функции MCrypt. Если в простом блочном режиме (ECB), то все нормально, что у меня в приложении, что на сайте в PHP
Решил запустить это дело в CBC режиме. В результате имею правильно зашифрованный первый блок, после чего начинаются различия.
Расшифровывается блок моим приложением правильно.
Собственно сама идея CBC везде разжевана:
шифрование:
0. Задание начального вектора
1. XOR блока с вектором
2. Шифрование блока
3. Обновление вектора зашифрованным блоком
4. Повторение пока есть данные с п.1
расшифровка:
0. Задание начального вектора
1. Сохранение блока во временную область
2. Расшифровка блока
3. XOR блока с вектором
4. Обновление вектора из временной области
5. Повторение пока есть данные с п.1
Но вот что-то не клеится... Или MCrypt как-то более хитро обновляет вектор для XTEA?
Тот же подход, но с AES-128, дает правильный результат