在C#中,我使用的是Blowfish.NET 2.1.3的BlowfishECB.cs文件(可以在这里找到)
在C++中,它是未知的,但它是相似的.
在C++中,Initialize(blowfish)过程如下:
void cBlowFish::Initialize(BYTE key[], int keybytes)
在C#中,Initialize(河豚)程序是相同的
public void Initialize(byte[] key, int ofs, int len)
这就是问题:
这是在C++中初始化密钥的方式
DWORD keyArray[2] = {0}; //declaration ...some code blowfish.Initialize((LPBYTE)keyArray, 8);
如您所见,密钥是两个DWORDS的数组,总共8个字节.
在C#我声明它,但我收到一个错误
BlowfishECB blowfish = new BlowfishECB(); UInt32[] keyarray = new UInt32[2]; ..some code blowfish.Initialize(keyarray, 0, 8);
错误是:
参数'1':无法从'uint []'转换为'byte []'
我究竟做错了什么?
提前致谢!
您可以使用BitConverter从UInt32获取字节.
为此,您需要在循环中转换每个元素.我会做的事情如下:
private byte[] ConvertFromUInt32Array(UInt32[] array)
{
List
private UInt32[] ConvertFromByteArray(byte[] array) { Listresults = new List (); for(int i=0;i