У нас есть закодированный, а затем заархивированный файл XML-документа. Этот файл зашифрован в Delphi пакетом под названием "DcpCrypt", используя Rijndael и SHA256:
fRijndael:=TDCP_rijndael.Create(nil);
fRijndael.BlockSize:=16;
fRijndael.CipherMode:=cmCBC;
fSHA256:=TDCP_sha256.Create(nil);
fSHA256.HashSize:=256;
Является ли С# способным его шифровать? Я много искал в googled, и кажется, что DcpCrypt вычисляет его ключи, отличные от .NET lib.
Большое спасибо заранее
Короткий ответ - да. Длительный ответ - "это зависит".
Говоря словами "вычисляет свои ключи", я предполагаю, что вы имеете в виду генерировать ключи шифрования. Как генерируются ключи, совершенно не имеет отношения к процессу использования этих ключей для шифрования и дешифрования.
DcpCrypt был написан до того, как Rijndael стал стандартом AES (который давно). Предполагая, что предварительная стандартная реализация Rijndael такая же, как AES (она, вероятно,), совместимость AES для шифрования/дешифрования должна быть нейтральной для языка и реализации, зависит только от вариантов реализации.
Но вот тр... идентификация этих параметров и установка их одинаковой как на коде шифрования, так и на коде дешифрования может быть сложной.
Каковы параметры?
После определения всех параметров, которые использует шифр, вы должны применить те же самые параметры к расшифровщику. Эта проблема не специфична для Rijndael/AES, но универсальна для всех шифров.
Кстати, если вы зажимаете для целей сжатия, шифрование, следующее за молнией, бессмысленно. Zip не сжимает файлы, содержимое которых уже является максимально случайным, например, зашифрованный текст.
Я рекомендую вам использовать TurboPower LockBox 3 для шифрования в AES, а не DcpCrypt. Dave Barton DCPcrypt был хорош в этот день, но он не соответствует стандартам, и он не безопасно управляет IV.
Каковы параметры, если вы используете LockBox? Если вы используете кодек LockBox 3 AES с режимом CBC, соление и IV управляются, устанавливая IV в nonce и предварительно испуская его. Для сообщений длиной более одного блока блокировка достигается зашифрованием зашифрованного текста. Для сообщений короче, чем один блок, режим цепочки принудительно переходит в 8-битный CFB, который работает с ключевыми потоками.
Также ваш комментарий о шифровании файла с SHA256 не имеет смысла. SHA - это хэш, а не шифр.