«Ошибка расшифровки» может означать много вещей.
- Вы расшифровываете механизм TransformFinalBlock () выдает исключение, потому что вы указали неверный ключ или IV
- Вы указали верный, но неверный IV - этоможно позаботиться, потому что вы знаете их правильные значения и то, как они защищены.
- вы ввели правильный ключ, IV, но неверный шифротекст (или подделанный).
1 - алгоритмическая ошибкаи может быть обработан.
К сожалению, для 2 и 3, не сравнивая дешифрованный текст с оригинальным открытым текстом, трудно понять, «не удалось ли расшифровать», если вы не введете некоторые дополнительные меры для проверки несанкционированного доступа - хеш является единственным ответом длятот.В обоих случаях результат может быть противоречивым.
Обнаружение подделки маловероятно как для потоковых, так и блочных шифров, поскольку они не предназначены для этой цели.Вы должны использовать комбинацию ctyptographic методов для создания подобной инфраструктуры.
Если у вас есть библиотека .NET, предназначенная для выдачи конкретного сообщения, не имеет значения, на каком языке (я предполагаю, что вы говоритеCLS-совместимый язык, C #, VB.NET и т. д.), на котором он был написан и на каком компьютере он работает, поведение должно быть согласованным.
РЕДАКТИРОВАТЬ: Блочные шифры всегда добавляют заполнениена ваш открытый текст независимо от метода сцепления, используемого для получения следующего полного размера блока перед шифрованием.Расшифровка должна удалить заполнение, но вы можете ожидать, что строка заканчивается одним или несколькими нулями.Будьте осторожны с этим и рассмотрите возможность сохранения длины ваших данных.