在 C# 中,我使用 Blowfish.NET 2.1.3 的 BlowfishECB.cs 文件(可以在这里找到)
在 C++ 中,它是未知的,但它是相似的。
在 C++ 中,Initialize(blowfish) 过程如下:
void cBlowFish::Initialize(BYTE key[], int keybytes)
在 C# 中,Initialize(blowfish) 过程是相同的
public void Initialize(byte[] key, int ofs, int len)
这就是问题:
这就是在 C++ 中初始化密钥的方式
DWORD keyArray[2] = {0}; //declaration
...some code
blowfish.Initialize((LPBYTE)keyArray, 8);
如您所见,键是一个由两个 DWORD 组成的数组,总共 8 个字节。
在 C# 我这样声明它,但我得到一个错误
BlowfishECB blowfish = new BlowfishECB();
UInt32[] keyarray = new UInt32[2];
..some code
blowfish.Initialize(keyarray, 0, 8);
错误是:
参数 '1':无法从 'uint[]' 转换为 'byte[]'
我究竟做错了什么?
提前致谢!