Если есть следующая ситуация:
- Клиентское приложение работает на 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;
}
Я также могу предоставить очень простоепример проекта, если это необходимо ...