1

TripleDES 暗号化を使用してデータを暗号化および復号化する C#/.NET コードがあります。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++ コードを教えてください。

.NET 関数がデータを暗号化するために使用する CryptoAPI のどのメソッドを使用するかはわかりません。どのオプションが使用され、キーを生成するためにどの方法が使用されますか?

とにかくC#で書くか、共通のライブラリブリッジを作成することを誰かが提案する前に、残念ながらそれらのオプションは検討の余地がありません。Win32 で .NET を使用し、DLL を使用せずに実際に動作する必要があります。C# コードを変更する余裕があります。

私は暗号化に慣れていないので、これが骨の折れる場合は事前にお詫び申し上げます。

4

0 に答える 0