我的 C++ 程序使用的是标准河豚。
我的 C# 程序使用的是 Blowfish 加密算法here http://www.hotpixel.net/software.html.
两个应用程序(TCP 客户端)执行相同的操作:接收数据包,对其进行加密,然后将其发回。如果服务器将数据包识别为正常 - 它会发送另一个数据包,否则会关闭套接字。我遵循了 C++ 和 C# 中的所有函数,除了加密之外,一切都是一样的。
在 C++ 文件中,我只有一种加密。然而,在 C# Blowfish 中我有
- 河豚CBC
- 河豚循环流化床
- 河豚欧洲央行
- 河豚简单
我不知道我的C++项目中的是哪一个,所以我随机挑选了BlowfishECB
。但它不起作用,服务器(我无权访问它)无法识别加密的数据包。
我的问题: C# 是否有标准的 Blowfish,或者如果这是唯一的,我该如何解决这个问题?
C++ 河豚代码可以在这里看到 http://pastebin.com/m178ea218.
不,C# 没有标准的河豚。它会使用你告诉它的任何内容。
(编辑:我想我误解了。如果您想要一个符合 C# 标准的河豚,我会推荐 Bouncy Castle Crypto。它是 Java 的一个端口,包含大多数文档化的 RFC 标准。请查看单元测试,了解如何使用类。每当我上次使用它时,都缺少文档,但是单元测试是很好的例子,说明了如何将事物组合在一起。)
您想问的问题是您的 C++ 应用程序正在使用哪种类型的 Blowfish。您在 C++ 应用程序中使用什么库来进行加密?了解这一点后,您就可以在 C# 应用程序中做出正确的选择。
我个人接触CBC最多的。 “简单”可能值得尝试。
您还必须处理诸如确保初始化向量与您使用的向量匹配之类的事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)