加密在 linux 下在 .NET Core 2.1 中生成的消息添加前导字节

Encryption a message which was generated in .NET Core 2.1 under linux adds leading bytes

如果有以下情况:

示例:在 linux 下加密 "Hallo welt" 会导致 windows 中出现“\u0004\nHallo 贴边”。

对我来说,.NETCore 加密的 linux 实现中似乎存在错误,或者(可能是填充问题)?

加密完成 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; }

如果需要,我也可以提供一个非常简单的示例项目...

这是 .NET Core 中的已知错误,将在 3.0 中修复...

参见:https://github.com/dotnet/corefx/issues/32978