2

我的 C++ 程序使用标准的河豚。

我的 C# 程序从这里使用 Blowfish 加密算法。

两个应用程序(TCP 客户端)都做同样的事情:接收数据包,对其进行加密,然后将其发回。如果服务器将数据包识别为正常 - 它会发送另一个数据包,否则它会关闭套接字。我遵循了 C++ 和 C# 中的所有函数,除了加密之外,一切都是一样的。

在 C++ 文件中,我只有一种加密。但是,在 C# Blowfish 我有

  • 河豚
  • 河豚CFB
  • 河豚欧洲央行
  • 河豚简单

我不知道我的 C++ 项目中是哪一个,所以我随机选择了BlowfishECB. 但它不起作用,服务器(我无权访问它)无法将数据包识别为加密。

我的问题:C# 是否有标准的 Blowfish,或者如果这是唯一的,我该如何解决这个问题? 编辑:

C++ 河豚代码可以在这里看到

4

1 回答 1

3

不,C# 没有标准的河豚。它会使用你告诉它的任何一个。(编辑:我想我误解了。如果你想要一个符合标准的 C# 河豚,我会推荐 Bouncy Castle Crypto。它是 Java 的一个端口,包含大多数文档化的 RFC 标准。查看单元测试以了解如何使用类。每当我上次使用它时,文档都缺少,但是单元测试是很好的例子,说明了事物如何组合在一起。)

您要问的问题是您的 C++ 应用程序使用的是哪种 Blowfish。您在 C++ 应用程序中使用什么库来进行加密?一旦你知道了这一点,你就可以在你的 C# 应用程序中做出正确的选择。

我个人遇到的最多的是CBC。“简单”可能值得尝试。

您还必须处理一些事情,例如确保您的初始化向量根据您使用的向量匹配。

于 2009-03-29T09:18:57.953 回答