4

我需要在 VB6 中加密一个字节数组并在 C#(NET 2.0)中解密它。反之亦然(C# 到 VB6)。

在 C# 中,我使用了 RijndaelManaged 类。在 VB6 中,我使用了来自 Internet 的免费片段。最好的似乎是http://www.frez.co.uk/freecode.htm#rijndael 但是这两种实现从相同的输入开始产生不同的输出:(

也许这是 RijndaelManaged 中的 IV 向量的问题......我不明白......

在 VB6 和 NET 之间使用 Rijndael/AES 的任何解决方案/经验?或 TripleDes....

谢谢你

更新:重要提示:运行 vb6 应用程序的机器没有 NET 框架。所以我不能使用 Interop 和/或暴露为 COM 的 NET 包装类。:(

4

5 回答 5

8

您可以使用 .NET 的互操作从 VB6 调用 C# 实现。这样双方都将使用同一个库。

这里有一些额外的信息: http: //msdn.microsoft.com/en-us/library/hfzzah2c (vs.71).aspx

于 2009-04-15T13:59:18.620 回答
1

我刚刚抓取了SlowAES,一个 AES 的 Javascript 实现,并将它嵌入到一个 Windows 脚本组件中,这使得它可以通过 COM 访问。然后我可以从 COM 客户端调用组件。我没有尝试 VB6,因为我没有 Visual Studio 6。但是对于我尝试过的 COM 客户端,当我使用相同的密钥 IV 时,我发现加密与 .NET 和RijndaelManaged () 类完全兼容、模式和密钥大小。

SlowAES 有点有限。例如,我没有看到欧洲央行模式。但我测试的东西与.NET 兼容。

WSC 文件的源代码可用。该源还包括可从 VB6 使用的符合 RFC2898 的 PBKDF2。因此,您可以通过密码设置密钥。它与 .NET 中的Rfc2898DeriveBytes类 兼容。

另请参阅相关问题

于 2009-05-13T14:18:55.347 回答
0

如果您可以在此处进行简单的 C 到 C# 转换,这是一个不错的解决方案。它适用于 VB6/php 和 C。看看Encryption for C++, Visual Basic, php using PC1

于 2011-07-05T14:25:11.420 回答
0

也许我会给你一些关于IV的信息。

初始化向量是一个明文发送的数据,应该为每个加密随机生成,以使构造型标头攻击更难或不可能执行。当然,加密器和解密器都必须具有相同的值集。

还有一些模式可以运行加密和解密。看看这个页面:维基百科:分组密码操作模式。您还应该确保两者的此模式相同。

于 2009-04-16T08:26:08.133 回答
0

VbCorLib 现在支持加密,包括 Rijndael。

它是免费的,并且类似于 .NET。链接:http: //vbcorlib.blogspot.com/

于 2010-10-20T16:35:57.440 回答