Rijndael / AES 从 C# 到 VB6

发布于 2024-07-17 19:01:37 字数 503 浏览 11 评论 0 原文

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

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

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

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

谢谢

更新:重要提示:运行 vb6 应用程序的机器没有 NET 框架,因此我无法使用 Interop 和/或作为 COM 公开的 NET 包装器类。

I need to encrypt a byte array in VB6 and decrypt it in C# (NET 2.0). And viceversa (C# to VB6).

In C# I used RijndaelManaged class. In VB6 I used free pieces of from Internet. The best seems to be http://www.frez.co.uk/freecode.htm#rijndael
But the two implementations generate different outputs starting from the same input :(

Perhaps it's a problem with the IV vector in RijndaelManaged ... I don't understand...

Any solution / experience using Rijndael / AES between VB6 and NET ? Or TripleDes....

thank you

UPDATE: IMPORTANT: The machine where vb6 app runs, has not NET framework. So I cannot use Interop and/or a NET wrapper class exposed as COM. :(

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

蝶舞 2024-07-24 19:01:37

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

以下是一些其他信息: http://msdn.microsoft.com /en-us/library/hfzzah2c(vs.71).aspx

You could use interop from .NET to call the C# implementation from VB6. That way both sides would be using the same library.

Here's some additional info: http://msdn.microsoft.com/en-us/library/hfzzah2c(vs.71).aspx

人生戏 2024-07-24 19:01:37

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

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

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

另请参阅相关问题

I just grabbed SlowAES, a Javascript implementation of AES, and embedded it into a Windows Script Component, which makes it accessible via COM. I was then able to call into the component from COM clients. I didn't try VB6 because i don't have Visual Studio 6. But for the COM clients I tried, I found the encryption to be completely compatible with .NET and the RijndaelManaged() class, when I use the same key, IV, mode, and keysize.

SlowAES is sort of limited; i didn't see an ECB mode for example. But the stuff I tested is compatible with .NET.

The source for the WSC file is available. That source also includes a RFC2898-compliant PBKDF2 usable from VB6. So you can set the key from a password. It is compatible with the Rfc2898DeriveBytes class in .NET.

See also, a related question.

隔纱相望 2024-07-24 19:01:37

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

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

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

Maybe I'll give you some informations regarding IV.

Initialization Vector is a clear-text sent data that should be generated randomly for each encryption to make stereotype headers attack harder or imposible to perform. Of course both encrypter and decrypter MUST have same value set.

Also there are some modes in which encryption and decryption may run. Have a look at this page: Wikipedia: Block cipher modes of operation. You should also ensure that this mode is same for both of them.

二智少女 2024-07-24 19:01:37

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

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

VbCorLib now supports cryptography, included Rijndael.

It's free and .NET-like. Link: http://vbcorlib.blogspot.com/

仅此而已 2024-07-24 19:01:37

如果您可以进行简单的 C 到 C# 转换,这里是一个很好的解决方案。 它与 VB6/php 和 C 配合得很好。看看 C++ 加密、 Visual Basic、使用 PC1 的 php

If you can do a simple C to C# conversion here is a nice solution. It works great with VB6/php and C. Have a look at Encryption for C++, Visual Basic, php using PC1.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文