我在VB6的解密程序。我现在想在C#中相同的解密。 需要解密的字符串为Unicode,所以我用Encoding.Unicode.GetString阅读C#的输入。输入现在看起来完全一样在VB6。

在循环中的前几个字符被解密OK!然后,我遇到一个区别... 该程序分析与不同的索引的字符“〜”比VB6。

调试当我看到在VB和NET中执行以下操作:搜索 VB6〜=代码152,点击 C#〜=代码732

不用说,解密失败。我需要得到152用于上述字符。

什么是错在这里?

此致

米歇尔

有帮助吗?

解决方案

您VB6是不读书的Unicode(我会在Windows的代码页1252猜测),这就是为什么它回来了不同的字符代码。

其他提示

你是什么意思“字152”究竟是什么意思?你是怎么得到这个数字?

请注意是“以Unicode”可能意味着许多不同的事情。你确定它的编码为二进制数据UTF-16?如果你能发布更多有关源数据,这将是非常有益的。

此外,加密和解密应几乎总是使用字节,而不是字符完成。虽然我理解你需要复制旧的行为,你应该尝试从一段时间治疗字符串作为不透明的二进制数据迁移出来。

我这样做过。问题是在您的编码。当.NET是unicode,VB6是Unifail。

在.NET方面,你需要使用Encoding.ASCII你的字符串转换成字节数组,反之亦然。

Encoding.ASCII.GetString(decrypted);
//and
Encoding.ASCII.GetBytes(cleartext);

所以,当你要加密发送到VB应用程序,您必须使用ASCII.GetBytes然后加密字节数组,当你从VB侧的字节数组,您必须对它们进行解密,并使用ASCII.GetString来字节解码成可用字符串。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top