Encryption RSA加密dotnet core中PEM公钥中的字符串

Encryption RSA加密dotnet core中PEM公钥中的字符串,encryption,.net-core,rsa,asp.net-core-1.1,Encryption,.net Core,Rsa,Asp.net Core 1.1,我正试图在DotnetCore(1.1)中使用PEM公钥文件加密字符串,我的问题是:我如何做到这一点 我认为这只是一个简单的例子: var cert = new X509Certificate2("path_to_public_key.pem"); using (var rsa = cert.GetRSAPublicKey()) { // encrypt here } 但是,当我尝试重新设置证书时,会出现以下错误: 错误:0D07803A:asn1编码例程:asn1\u项目\u EX\

我正试图在DotnetCore(1.1)中使用PEM公钥文件加密字符串,我的问题是:我如何做到这一点

我认为这只是一个简单的例子:

var cert = new X509Certificate2("path_to_public_key.pem");
using (var rsa = cert.GetRSAPublicKey())
{
    // encrypt here
}
但是,当我尝试重新设置证书时,会出现以下错误:

错误:0D07803A:asn1编码例程:asn1\u项目\u EX\u D2I:嵌套asn1错误

PEM文件如下所示:

-----BEGIN PUBLIC KEY-----
... ANBgkqhkiG9w0BAQEFA ...
(loads more text)
-----END PUBLIC KEY-----
我已经检查了pem文件,任何地方都没有多余的^M字符(由于错误的原因)

(如果这有什么不同的话,我在macOS Sierra上)


任何帮助都将不胜感激

Artjom B的评论让我走上了正确的道路。公钥实际上不是证书

解决方案来自优秀的岗位

对于dotnetcore(它没有
rsacyptoserviceprovider
类),我做了一些小的修改。您可以从
getrsaproviderfromfrompemfile
返回
rsapameters
对象,然后可以像这样使用:

using (var rsa = RSA.Create()
{
   rsa.ImportParameters(GetRSAProviderFromPemFile("path_to_pem.pem"));
   var encrypted = rsa.Encrypt( ... );
}

您似乎有公钥而不是证书。我想你不应该使用
X509Certificate2
@ArtjomB。非常感谢。你让我走上了正确的道路。(当有人指出时,这一点很明显!)您是如何使用给定的
getrsaproviderfromfemfile
示例初始化rsa参数的?但是
rsapcryptoserviceprovider
自v1.0开始在.NET Core中可用