【发布时间】:2021-10-05 08:14:23
【问题描述】:
我正在尝试使用以下内容将 RSA 公钥导入 dotnet:
var rsa = RSA.Create();
rsa.ImportRSAPublicKey(Convert.FromBase64String(PublicKey), out _);
密钥是通过以下方式生成的:
openssl genrsa -out name_of_private_key.pem 2048
openssl rsa -in name_of_private_key.pem -pubout > name_of_public_key.pem
输出:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtZL7iKRPSxrCflER6j/I
wB9fODXJgfxR4UBSU3oUJ8tIaBBnDrcutfXDfc7lZ9HcCZccvUsMzFKGJuvHthCE
/LNJmZtRRd02aLynoZSWqDBerCdRqXHbecMfK8KPxQSsWfinNiyFG76vTX2+V8P6
t4Cu8bM8j7foSBgOmECCSOjTuCG4bvKVS3bnu2lSBNgCjEMltk9W/3oSzKbN/mwn
GfViaXU5a1Zps3jLbx/z58o3Sb25QfQKU4xeohcx+Wj6d14lI80RErS1QTqSQ1rz
10Cs/Q1MudWstckqyE/u048GtXzQCzQOe4hWlyrcFqfiEAbV2jPLU61oer4/wT+0
7QIDAQAB
-----END PUBLIC KEY-----
但是这会返回
System.Security.Cryptography.CryptographicException: ASN1 corrupted data.
要导入密钥,我将获取标题之间的文本并删除换行符,仅此而已。我注意到rsa.ImportSubjectPublicKeyInfo 似乎可以工作,但是我并没有尝试生成 X.509 密钥,我想要一个 PKCS#1 密钥,以便我可以使用上面的代码。
猜我搞砸了 openssl 命令?
【问题讨论】:
-
在您的声明中将
-pubout替换为-RSAPublicKey_out。之后要转换 X.509/SPKI 密钥,请使用openssl rsa -pubin -RSAPublicKey_out -in <x509.pem> -out <public_pkcs1.pem> -
遇到一些奇怪的语法错误。你介意完整的样本吗?也请作为答案,以便您获得积分。
-
好的,请看我的回答。
-
...我没有尝试生成 X.509 密钥... 该调用与“X. 509 键”。这只是 RFC 5280 中定义的公钥格式,可以说这种格式比您似乎更喜欢的“PKCS #1”更标准且可互操作。
标签: .net-core rsa asp.net-core-3.1