【问题标题】:RSA encrypt a string from PEM public key in dotnet coreRSA从dotnet核心中的PEM公钥加密字符串
【发布时间】:2017-08-12 16:44:08
【问题描述】:

我正在尝试使用 dotnet core (1.1) 中的 PEM 公钥文件加密字符串,我的问题是:我该怎么做?

我认为这只是以下情况:

var cert = new X509Certificate2("path_to_public_key.pem");
using (var rsa = cert.GetRSAPublicKey())
{
    // encrypt here
}

但是,当我尝试更新证书时,我收到以下错误:

错误:0D07803A:asn1 编码例程:ASN1_ITEM_EX_D2I:nested asn1 错误

PEM 文件如下所示:

-----BEGIN PUBLIC KEY-----
... ANBgkqhkiG9w0BAQEFA ...
(loads more text)
-----END PUBLIC KEY-----

我检查了 pem 文件,发现任何地方都没有多余的 ^M 字符(来自建议的错误原因 here)。

(如果这有什么不同,我使用的是 macOS Sierra)

任何帮助将不胜感激!

【问题讨论】:

  • 您似乎拥有公钥而不是证书。我猜你不应该使用X509Certificate2
  • @ArtjomB。谢谢!你让我走上了正确的道路。 (当有人指出时,它是如此明显!)。

标签: encryption .net-core rsa asp.net-core-1.1


【解决方案1】:

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

解决方案来自this优秀帖子。

对于 dotnet 核心(没有 RSACryptoServiceProvider 类),我做了一些小的修改。你可以从GetRSAProviderFromPemFile返回一个RSAParameters对象,然后你可以像这样使用它:

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

【讨论】:

猜你喜欢
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
  • 2014-10-29
  • 2013-06-08
  • 2014-07-07
相关资源
最近更新 更多