Blowfish 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);
Однако в С++ я получаю зашифрованные данные, но не в С#.
Строки 45,47 и 49 в C# NET Blowfish являются проблемными строками, после вычисления в строке 45 - результат становится 0. строка 47 становится 2 + 0 = 2, а строка 49 2 не меньше 2, поэтому цикла нет.
В Blowfish на С++ есть некоторые дополнения, но я теряюсь, когда пытаюсь понять это.
Моя проблема в том, что в C# заполнение должно быть точно таким же, как в C++, поэтому я получаю правильный ответ. зашифрованный массив не мой.
Не могли бы вы указать мне, какие отступы используются в Blowfish C++ и как это должно быть реализовано в C# NET.
//Обратите внимание, что мне не нужно отправлять этот пакет несколько раз, только один раз.
Заранее спасибо!