C# 从字符串初始化RSA

C# 从字符串初始化RSA,c#,rsa,C#,Rsa,我正试图解密一些用RSA加密的文本,我有公钥来解密 ` ` 如何将其加载到rsacyptoserviceprovider,因为它只能从XMLString加载,我不知道如何将其转换为Xml格式 密钥大小为128 我尝试使用以下代码初始化它 public byte[] Decrypt128(byte[] input) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(128); rsa.ImportCspBlo

我正试图解密一些用RSA加密的文本,我有公钥来解密

`

`

如何将其加载到
rsacyptoserviceprovider
,因为它只能从XMLString加载,我不知道如何将其转换为Xml格式

密钥大小为128

我尝试使用以下代码初始化它

public byte[] Decrypt128(byte[] input)
{
    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(128);
    rsa.ImportCspBlob(Encoding.ASCII.GetBytes(_longKey));
    return rsa.Decrypt(input, true);
}
_longKey是介于开始和结束之间的内容,还包括开始和结束,bot
提供程序的错误版本。

这不是一个重复的问题

我已经知道如何将字节转换为十六进制,以及如何将十六进制转换为字节,但这对我初始化
RSACryptServiceProvider
没有任何帮助,也许可以给我一个例子,说明这有什么帮助,但在这一点上,它没有什么帮助,你可以使用一个
PemReader
来提取密钥的模和指数:

using (var reader = File.OpenText("mykey.key"))
{
    var pem = new PemReader(reader);
    var o = (RsaKeyParameters)pem.ReadObject();
    using (var rsa = new RSACryptoServiceProvider())
    {
        var parameters = new RSAParameters();
        parameters.Modulus = o.Modulus.ToByteArray();
        parameters.Exponent = o.Exponent.ToByteArray();
        rsa.ImportParameters(parameters);

        // Do what you need to do with the RSACryptoServiceProvider instance
    }
}
如果您不想在项目中依赖BouncyCastle,使用此方法将公钥加载到
RSACryptServiceProvider
后,您可以将其导出为XML以供将来使用:

string xml = rsa.ToXmlString(false);
File.WriteAllText("mykey.xml", xml);

可能的重复如果我需要使用公钥初始化
RSACryptoServiceProvider
,我不确定这是否是可能的重复开始和结束之间的内容可能是一个六进制字符串,甚至更可能是一个字符串。因此Encoding.GetBytes不起作用。根据,没有提到任何需要任何描述的XML的内容。我将尝试一下,但它肯定不是该问题的重复。我认为这可能会起作用,我用公钥更新了我的问题,我认为它可能已损坏或加载得很好,但ImportParameters提供了
坏数据
我看不到导致您问题中坏数据的实际公钥。此公钥的指数为16字节,大大超过了
RSACryptServiceProvider
支持的4字节。Yikes,有什么建议吗?您需要另一个私钥/公钥对,其中公钥的指数不超过4字节。
string xml = rsa.ToXmlString(false);
File.WriteAllText("mykey.xml", xml);