RSA加密从dotnet核心中的PEM公钥的字符串
问题描述:
我想在dotnet核心(1.1)中使用PEM公钥文件加密字符串,我的问题是:我该如何做?RSA加密从dotnet核心中的PEM公钥的字符串
我以为这只会是一个案例:
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字符在任何地方(如m建议错误原因为here)。
(我在MacOS塞拉利昂,如果有什么差别)
任何帮助将不胜感激!
答
Artjom B的评论让我走上了正确的道路。公钥实际上不是证书。
解决方案来自this优秀的职位。
对于dotnet核心(它没有RSACryptoServiceProvider
类)我做了一些小修改。您可以从GetRSAProviderFromPemFile
返回RSAParameters
对象,那么你可以使用像:
using (var rsa = RSA.Create()
{
rsa.ImportParameters(GetRSAProviderFromPemFile("path_to_pem.pem"));
var encrypted = rsa.Encrypt(...);
}
你似乎有一个公共密钥,而不是证书。我想你不应该使用'X509Certificate2'。 –
@ArtjomB。谢谢!你把我送到了正确的道路上。 (当有人指出时,这是非常明显的!)。 – stush