C++ 河豚支持加密少于 8 个字母的块,而 .NET 不支持。为什么?
-->C# NET Blowfish<-- -->C++ Blowfish<--
在 C++ 和 C# 应用程序中,我加密了以下数组
byte response[6] =
{
0x00, 0x80, 0x01, 0x61, 0x05, 0x06
};
在 C++ 和 C# 应用程序中,我使用相同的参数调用 Encrypt 函数。
C++
Blowfish.Encrypt((LPBYTE)responce + 2,(LPBYTE)responce + 2, 4);
C#
Blowfish.Encrypt(responce, 2, responce, 2, responce.Length - 2);
但是,在 C++ 中,我得到了加密的数据,但不是在 C# 中。
C# NET Blowfish中的第 45,47 和 49行是有问题的行,在第 45 行计算后 - 结果变为 0。第 47 行变为 2 + 0 = 2 并且第 49 行 2 不小于 2,因此没有循环。
C ++河豚中有一些填充,但是当我尝试理解它时我迷路了。
我的问题是,在 C# 中,填充必须与 C++ 中的完全相同,所以我得到了一个有效的答案。我不能使用随机填充然后在解密后删除无用的字节,因为我发送加密数组的服务器是不是我的。
您能否指出 C++ 河豚中使用了哪些填充以及如何在 C# NET 中实现它。
//注意我不需要多次发送这个数据包,只需一次。
提前致谢!