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# 编写它,或者为他们创建一些通用库桥之前,不幸的是,这些选项不在桌面上。它确实必须在带有 .NET 且不使用 DLL 的 Win32 中工作。我在更改 C# 代码方面有一些余地。

如果这是愚蠢的,我提前道歉,因为我是加密新手。

4

0 回答 0