У меня есть код C # / .NET, который шифрует и дешифрует данные с использованием шифрования TripleDES. Он очень близко придерживается примера кода, представленного на MSDN. Часть шифрования выглядит следующим образом:
TripleDESCryptoServiceProvider _desProvider = new TripleDESCryptoServiceProvider();
//bytes for key and initialization vector
//keyBytes is 24 bytes of stuff, vectorBytes is 8 bytes of stuff
byte[] keyBytes;
byte[] vectorBytes;
FileStream fStream = File.Open(locationOfFile, FileMode.Create, FileAccess.Write);
CryptoStream cStream = new CryptoStream(fStream,
_desProvider.CreateEncryptor(keyBytes, vectorBytes),
CryptoStreamMode.Write);
BinaryWriter bWriter = new BinaryWriter(cStream);
//write out encrypted data
//raw data is a few bytes of binary information
byte[] rawData;
bWriter.Write(rawData);
С шифрованием и дешифрованием в C # все это работает как шарм. Проблема в том, что мне нужно написать небольшую утилиту Win32, которая будет дублировать шифрование, описанное выше. Я испробовал несколько методов с использованием CryptoAPI, и я просто не получаю вывод, что часть .NET может расшифровать, независимо от того, что я делаю. Может кто-нибудь сказать мне, что эквивалентный код C ++, который будет производить тот же вывод?
Я не уверен, какие именно методы CryptoAPI используются функциями .NET для шифрования данных. Какие параметры используются и какой метод генерации ключа используется?
Прежде чем кто-то предложит мне просто написать его на C # или создать для них какой-нибудь общий библиотечный мост, эти опции, к сожалению, не обсуждаются. Это действительно должно работать в Win32 с .NET и без использования DLL. У меня есть возможность изменить код C #.
Я заранее прошу прощения, если это кость, так как я новичок в шифровании.