Encryption RSA加密dotnet core中PEM公钥中的字符串
我正试图在DotnetCore(1.1)中使用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\
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中可用