C# 如何使用字符串私钥创建RSACryptServiceProvider

C# 如何使用字符串私钥创建RSACryptServiceProvider,c#,.net,encryption,rsa,x509certificate,C#,.net,Encryption,Rsa,X509certificate,我只有私钥。我想用它对RSA算法中的数据进行签名。 我知道如何使用证书签署数据。但我没有任何方法使用字符串格式的私钥来创建和使用RSACryptServiceProvider 我的代码看起来像这样 string privateKey = "-----BEGIN PRIVATE KEY-----\nsometext\nsometext\nsometext\.....\n-----END PRIVATE KEY-----\n" var rasAlg = new RSACryptoServicePro

我只有私钥。我想用它对RSA算法中的数据进行签名。 我知道如何使用证书签署数据。但我没有任何方法使用字符串格式的私钥来创建和使用RSACryptServiceProvider

我的代码看起来像这样

string privateKey = "-----BEGIN PRIVATE KEY-----\nsometext\nsometext\nsometext\.....\n-----END PRIVATE KEY-----\n"
var rasAlg = new RSACryptoServiceProvider()// how can i use my private key here.
var signature = rasAlg.SignData(bytesArray, new SHA256CryptoServiceProvider());
编辑


如果有人能帮我创建X509Certificate,那也没问题。

我发现bouncy castle库很有用。我用bouncy castle pem阅读器从字符串中读取它

AsymmetricKeyParameter keyPair;

using (var reader = new StringReader(privateKey))
    keyPair = (AsymmetricKeyParameter)new PemReader(reader).ReadObject();

一种方法是RSA.FromXmlStringPrivateKey将密钥存储为XML@Plutonix当我将其导出到XMLString时,它会输出模数、指数、P、Q、DP、DQ、InverseQ、D。那么我如何使用私钥呢?请您解释一下模数、P、Q、DP、DQ、InverseQ和D是私钥。我们大多数图书馆也需要指数。公钥就是模和指数。