Как использовать Blowfish в C++ в качестве внешней dll в C#
Вопрос
Кажется, в C# нет иглобрюха, который делал бы то же самое, что и Вот этот.Поэтому я решил использовать его как внешний, и если он снова не сработает, то перевести всю Blowfish на C#.Но сначала попробую использовать как внешний.
Не могли бы вы взглянуть на С++ иглобрюхая рыба и скажите мне, нужно ли мне изменить параметры функции (некоторые из них - LPBYTE, которые не включены в C#).
Кроме того, я был бы благодарен, если бы вы рассказали мне, как использовать их в качестве внешней dll (у меня она уже скомпилирована как dll), но параметры функции в C++ меня расстраивают.
Редактировать:Мне нужно вызвать только Initialize, Encode и Decode.
Заранее спасибо!
Решение
У меня была похожая проблема в предыдущем проекте.Посмотрев на код C++, он использует ECB, как вы и подозревали в предыдущем посте.Думаю, я понимаю причину, по которой вы получаете разные результаты, используя Blowfish.NET (предложение Аркаина).Код C++ преобразует входные данные в два DWORD во время шифрования.Я считаю, что Blowfish.NET поступит правильно, сохранив порядок байтов в DWORD, которые он использует для внутреннего шифрования.
Например:В коде C++ байты 0102030405060708 становятся 0x04030201 и 0x08070605.Реализация .NET будет иметь номера 0x01020304 и 0x05060708.