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# コードを変更する余裕があります。
私は暗号化に慣れていないので、これが骨の折れる場合は事前にお詫び申し上げます。