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