RSA 从 dotnet 核心中的 PEM public 密钥加密字符串
RSA encrypt a string from PEM public key in dotnet core
我正在尝试使用 dotnet 核心 (1.1) 中的 PEM public 密钥文件加密字符串,我的问题是:我该怎么做?
我认为这只是以下情况:
var cert = new X509Certificate2("path_to_public_key.pem");
using (var rsa = cert.GetRSAPublicKey())
{
// encrypt here
}
但是,当我尝试更新证书时出现以下错误:
error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
PEM 文件如下所示:
-----BEGIN PUBLIC KEY-----
... ANBgkqhkiG9w0BAQEFA ...
(loads more text)
-----END PUBLIC KEY-----
我已经检查了 pem 文件,没有任何无关的 ^M 字符(来自错误的建议原因 here)。
(如果有什么不同的话,我使用的是 macOS Sierra)
如有任何帮助,我们将不胜感激!
Artjom B 的评论让我走上了正确的道路。 public 密钥确实不是证书。
解决方案来自this优秀post。
对于 dotnet 核心(没有 RSACryptoServiceProvider
class),我做了一些小修改。您可以 return 来自 GetRSAProviderFromPemFile
的 RSAParameters
对象,然后您可以像这样使用它:
using (var rsa = RSA.Create()
{
rsa.ImportParameters(GetRSAProviderFromPemFile("path_to_pem.pem"));
var encrypted = rsa.Encrypt( ... );
}
我正在尝试使用 dotnet 核心 (1.1) 中的 PEM public 密钥文件加密字符串,我的问题是:我该怎么做?
我认为这只是以下情况:
var cert = new X509Certificate2("path_to_public_key.pem");
using (var rsa = cert.GetRSAPublicKey())
{
// encrypt here
}
但是,当我尝试更新证书时出现以下错误:
error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
PEM 文件如下所示:
-----BEGIN PUBLIC KEY-----
... ANBgkqhkiG9w0BAQEFA ...
(loads more text)
-----END PUBLIC KEY-----
我已经检查了 pem 文件,没有任何无关的 ^M 字符(来自错误的建议原因 here)。
(如果有什么不同的话,我使用的是 macOS Sierra)
如有任何帮助,我们将不胜感激!
Artjom B 的评论让我走上了正确的道路。 public 密钥确实不是证书。
解决方案来自this优秀post。
对于 dotnet 核心(没有 RSACryptoServiceProvider
class),我做了一些小修改。您可以 return 来自 GetRSAProviderFromPemFile
的 RSAParameters
对象,然后您可以像这样使用它:
using (var rsa = RSA.Create()
{
rsa.ImportParameters(GetRSAProviderFromPemFile("path_to_pem.pem"));
var encrypted = rsa.Encrypt( ... );
}