Это моя 3-я проблема, связанная с проблемой blowfish в C#. Несмотря на то, что я не мог использовать blowfish в моем приложении, я решил использовать его как внешнюю dll C++. Обратите внимание, что я пробовал Blowfish.NET и любой другой, проблема в том, что я переводил код с C++ на C#, а код C# должен делать то же самое, что и код C++.Проблема при вызове функции dll C++ из C#
До сих пор:
Примечание экспортируемые функции в конце кода
C# код (определение)
[DllImport("TestDLL.dll", EntryPoint = "Initkey" ,ExactSpelling = true , CallingConvention = CallingConvention.Cdecl)]
public static unsafe extern void Initkey(byte[] key);
[DllImport("TestDLL.dll", EntryPoint = "encode", ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)]
public static unsafe extern void encode(UInt32 *stream);
C# код (функция вызова)
-Initialize Blowfish ключ
UInt32[] keyarray = new UInt32[2];
//some code
Extern.Initkey(Misc.ConvertFromUInt32Array(keyarray));
//
//
//Helper function used to convert a UInt32 array into Byte array.
public static byte[] ConvertFromUInt32Array(UInt32[] array)
{
List<byte> results = new List<byte>();
foreach (UInt32 value in array)
{
byte[] converted = BitConverter.GetBytes(value);
results.AddRange(converted);
}
return results.ToArray();
}
-Encode данных.
UInt32[] keyarray2 = new UInt32[2];
//some code
unsafe
{
fixed (UInt32* LPBYTE = keyarray2)
{
Extern.encode(LPBYTE);
}
}
После keyarray2 перезаписаны функцией Encode, я проверить значения в коде C++ путем дешифрования их, чтобы убедиться, что все в порядке.
Ну, это нехорошо. Это моя проблема. Вот почему я прошу вас о вашей помощи.
Значения различаются при их расшифровке, но если я их зашифровываю и расшифровываю их в источнике C++, они равны. Код C++ абсолютно одинаковый, за исключением того, что нет библиотеки DLL, поскольку код находится на C++.
Может быть, из-за функции Initialize.I прочитал пару месяцев назад, что массивы в C++ передаются как Pointers.I не верю, но даже в этом - может быть, это проблема?
Я не могу найти ключ. Я потратил всю свою жизнь на эту муху в C#. По крайней мере, это решение должно работать, но это не так. Почему?
Вы потратили впустую свою жену? Немного о переоценке IMO .. – Blorgbeard