Вопрос

Моя программа на C++ использует стандартную рыбу-фугу.

Моя программа на C# использует алгоритм шифрования Blowfish из здесь.

Оба приложения (TCP-клиенты) делают одно и то же:получить пакет, зашифровать его и затем отправить обратно.Если сервер распознает пакет как обычный — он отправляет другой пакет, иначе закрывает сокет.Я выполнил все функции C++ и C#, и все осталось таким же, кроме шифрования.

В файле C++ у меня только одно шифрование.Однако в C# Blowfish у меня есть

  • ИглобрюхаяCBC
  • ИглобрюхаяCFB
  • БлофишECB
  • ИглобрюхаяПростой

Я не знал, какой из них используется в моем проекте на C++, поэтому я случайно выбрал BlowfishECB.Но это не работает, сервер (у меня нет к нему доступа) не распознает пакет как зашифрованный.

Мой вопрос:Существует ли стандартный Blowfish для C# или, если он единственный, как мне решить эту проблему?РЕДАКТИРОВАТЬ:

Код иглобрюхой C++ можно увидеть здесь.

Это было полезно?

Решение

Нет, стандартного Blowfish для C# не существует.Он будет использовать то, что вы ему скажете.(Редактировать:Думаю, я неправильно понял.Если вам нужен Blowfish, соответствующий стандартам, для C#, я бы порекомендовал Bouncy Castle Crypto.Это порт Java, содержащий большинство документированных стандартов RFC.Взгляните на модульные тесты, чтобы увидеть примеры использования классов.Когда бы я ни использовал его в последний раз, документации отсутствовало, но модульные тесты являются довольно хорошими примерами того, как все сочетается.)

Вопрос, который вы хотите задать, заключается в том, какой вариант Blowfish использует ваше приложение на C++.Какую библиотеку вы используете в приложении C++ для шифрования?Зная это, вы сможете сделать правильный выбор в своем приложении C#.

Лично я чаще всего сталкиваюсь с CBC.«Простой», вероятно, стоит попробовать.

Вам также придется иметь дело с такими вещами, как обеспечение совпадения вектора инициализации в зависимости от того, какой из них вы используете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top