Шифрование сообщения, которое было сгенерировано в .NET Core 2.1 под Linux, добавляет начальные байты - PullRequest
0 голосов
/ 30 ноября 2018

Если есть следующая ситуация:

  • Клиентское приложение работает на Raspian с .NETCore 2.1 (Linux)
  • Зашифровывает сообщение с помощью открытого сертификата (RSA)
  • Отправляет это зашифрованное сообщение на сервер Windows
  • Этот сервер расшифровывает сообщение
  • Теперь у данных есть еще 2 байта в начале текста!

Пример: Шифрование "Hallo welt" под linux приводит к "\ u0004 \ nHallo welt" в windows.

Мне кажется, что в реализации linux есть ошибкаШифрование .NETCore или (возможно, проблема с заполнением)?

Шифрование выполняется с помощью public static byte[] Encrypt(byte[] plainData, X509Certificate2 certificate) { var message = new EnvelopedCms(new ContentInfo(plainData)); message.Encrypt(new CmsRecipient(SubjectIdentifierType.IssuerAndSerialNumber, certificate)); return message.Encode(); }

Расшифровка с помощью: public static byte[] Decrypt(byte[] encryptedData, X509Certificate2 certificate) { var message = new EnvelopedCms(); message.Decode(encryptedData); message.Decrypt(new X509Certificate2Collection {certificate} ); return message.ContentInfo.Content; }

Я также могу предоставить очень простоепример проекта, если это необходимо ...

1 Ответ

0 голосов
/ 17 декабря 2018

Это известная ошибка в .NET Core, которая будет исправлена ​​в 3.0 ...

См .: https://github.com/dotnet/corefx/issues/32978

...