无法从C#中的RSA PRIVATE KEY文件加载私钥

时间:2017-05-30 12:58:57

标签: c# openssl rsa x509certificate2

我想用RSA.SignHash()签名一些数据。 我在Linux OpenSSL中通过以下命令创建了一个RSA私钥文件。

openssl genrsa -out private_key.pem 1024

但是当我想通过X509Certificate2的对象加载此密钥时,请获取“找不到请求的对象”。例外。 这是我的代码:

string keyFilePath = @"C:\Keys\private_key.pem";
X509Certificate2 cert = new X509Certificate2(keyFilePath);

我已经使用了Chilkat库并且一切正常,但是Microsoft没有任何步行但没有任何第三方工具接近它? 这是我的pem文件内容:

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQC23ivEPgSqxCcSTNUY8IbjCO0+0FwarI/azCHp97cWCBaosFAe
mN9eI7u3agv2tCk+QrKrFDlkYWskFiADm55NMvDE1fuyy7db84MMh+GFcyemYZ0o
yG5oBYPw7aNY7N7fBO5pbF9M/v4TMjKoxYGxk2kl58KT9cmvVH7TaF8xkwIDAQAB
AoGAfVzRpDbf/DF8l48Uh4Rc9EeqXOV6Ps8Nz3EhzsODQBdLcVltk4w5lM/qYFLS
4M2heI1A7wduUOJ4EMUaLV8BpcFkA2kSPah48R/1EGAMOpaD09j8qHJLCHJ2uiSc
Hqi6z/6GhpSLzU5XR1lj0UIPy9aC9X0yPAao0WZ+5YgTdAECQQDoCwCmFD5r00Y0
DcQGbAU/eekHJwNk48ACvIDquK/ysqA8aXvWgyXd3oa82fUSvSAMDGNFYr9xOxqF
Vnnsi6VXAkEAyb9yymbehjwwl33CjPcsIRbjetLDwPgWhVYii4q7jELlefyC8mHL
cpn0ejS4ln/uTUuNZCdYNHvYjQ8eXfaUJQJADfM7YsCs0AavncmGE2zDFAHcRJXP
2mzmykNS7MmVql2azIb67vaLfD84knn4Bdxg5NiJz04UfFY1TfbY9aOfmQJBAJGX
jsCQMiBPSYXZ5M+UBI2wleNqPIiCwMXinjVzndsf37kDyIAgoRCIGA0lBNzfX9r6
HgRb/GSLx4Asm+6VZt0CQQC2DwtG+CKDyqEvhIGqlrAuQivMLJExZZV3kjsFSWOA
CZFSr8JsSghb3bbxYexkzbWfalESYRkqu+zNWDPs9gpt
-----END RSA PRIVATE KEY-----

1 个答案:

答案 0 :(得分:1)

不,没有第三方工具就没有友好的方法。如果你只有私钥,那么恕我直言new X509Certificate2(keyFilePath)没有意义。

您可以做的是实现(或使用库)来解析私钥。然后将解析后的私钥参数编码为可以使用RSA.FromXmlString导入的xml结构。