Как я могу сгенерировать эквивалентный вывод, используя CryptoAPI и шифрование .NET (TripleDESCryptoServiceProvider)? - PullRequest
1 голос
/ 27 мая 2010

У меня есть код 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 #.

Я заранее прошу прощения, если это кость, так как я новичок в шифровании.

...