C# 使用RSACryptServiceProvider解密。解密(字节[],bool)问题

C# 使用RSACryptServiceProvider解密。解密(字节[],bool)问题,c#,encryption,byte,rsa,C#,Encryption,Byte,Rsa,我在尝试使用指定的私钥解密RSA加密的字节数组时遇到了这个问题:基本上,在调用.decrypt()方法之后,我得到的只是一个空字节数组(字节[0]) 代码如下: static RSACryptoServiceProvider eng; static RSACryptoServiceProvider gne; static RSA() { eng = new RSACryptoServiceProvider(); gne = new RSA

我在尝试使用指定的私钥解密RSA加密的字节数组时遇到了这个问题:基本上,在调用.decrypt()方法之后,我得到的只是一个空字节数组(字节[0])

代码如下:

static RSACryptoServiceProvider eng;
    static RSACryptoServiceProvider gne;

    static RSA()
    {
        eng = new RSACryptoServiceProvider();
        gne = new RSACryptoServiceProvider();
        eng.FromXmlString(xmlKKEY);
        gne.FromXmlString(xmlPKEY);
        eng.ImportParameters(eng.ExportParameters(true));
    }

    public static byte[] Encrypt(byte[] data)
    {
        return gne.Encrypt(data, false);
    }

    public static byte[] Decrypt(byte[] data)
    {
        byte[] d = eng.Decrypt(data, false);
        return d;
    }
由于请求,我已将密钥包括在内-在我使用pepta.net生成密钥时:

    private readonly static string KKEY = @"
-----BEGIN RSA PRIVATE KEY-----
MIIBOQIBAAJBALrz8nKq+vpVBnZTNTM/jaRDRTdKPdS6c59+Fb4cEHF4Tj959EWH
dxpP0neCzXYeygJoVMjGshsOo59YoQXcGeUCAwEAAQJAMTauiAkCcIuZW+SjiI4e
VzNuMRPWGv3KGh4y0wzIN1YkvQvRgi9vTfY5AqGK1SRtlwcLuXJz2MyYUpcK5yJX
MQIhAOisz2NriiIHzBoklOVYKcx4fy8OdSUa70dFHWOs+jITAiEAzbHCoFBFXiIL
AZ2AUJojuNAtmktpCU1HK+42xA0+wycCIDmpAagAsXWnewQLhr6jL5CVV+dgbNVq
LFv8G8Fkz4fzAiBu8XXcKe+AOjRdhqnyz3B8+ivekNXyYnAEzdNUIyC6+QIgK4Rd
Y+ShRJK2nXZ5JUbz+FfwpzYYBVEaGg8dKK7nRcw=
-----END RSA PRIVATE KEY-----";

        private static readonly string xmlKKEY = "<RSAKeyValue><Modulus>uvPycqr6+lUGdlM1Mz+NpENFN0o91Lpzn34VvhwQcXhOP3n0RYd3Gk/Sd4LNdh7KAmhUyMayGw6jn1ihBdwZ5Q==</Modulus><Exponent>AQAB</Exponent><P>6KzPY2uKIgfMGiSU5VgpzHh/Lw51JRrvR0UdY6z6MhM=</P><Q>zbHCoFBFXiILAZ2AUJojuNAtmktpCU1HK+42xA0+wyc=</Q><DP>OakBqACxdad7BAuGvqMvkJVX52Bs1WosW/wbwWTPh/M=</DP><DQ>bvF13CnvgDo0XYap8s9wfPor3pDV8mJwBM3TVCMguvk=</DQ><InverseQ>K4RdY+ShRJK2nXZ5JUbz+FfwpzYYBVEaGg8dKK7nRcw=</InverseQ><D>MTauiAkCcIuZW+SjiI4eVzNuMRPWGv3KGh4y0wzIN1YkvQvRgi9vTfY5AqGK1SRtlwcLuXJz2MyYUpcK5yJXMQ==</D></RSAKeyValue>";

        private readonly static string PKEY = @"
-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALrz8nKq+vpVBnZTNTM/jaRDRTdKPdS6
c59+Fb4cEHF4Tj959EWHdxpP0neCzXYeygJoVMjGshsOo59YoQXcGeUCAwEAAQ==
-----END PUBLIC KEY-----";

        private static readonly string xmlPKEY = "<RSAKeyValue><Modulus>uvPycqr6+lUGdlM1Mz+NpENFN0o91Lpzn34VvhwQcXhOP3n0RYd3Gk/Sd4LNdh7KAmhUyMayGw6jn1ihBdwZ5Q==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
private只读静态字符串KKEY=@”
-----开始RSA私钥-----
Miiboqibajajbalrz8NKQ+VpvNZTNTM/jaRDRTdKPdS6c59+FB4CEHF4TJ959EW
DXPP0NECZXYEYGJOVMJGSHSOO59YOQXCGEUCAWAAQJAMTAUKIACCIUZW+SjiI4e
VzNumRpWgV3KgH4Y0WZin1YKVQVrgi9VTFY5AQGK1SRTLWCLUXJZ2MyyYUPCK5YJX
MQIHAOISZ2RIIIHZBOKLOVYKX4FY8ODSUA70DFHWOS+JITAIZBfxIIL
AZ2AUJojuNAtmktpCU1HK+42xA0+WycidmpaagasxwnewQLHR6JL5CVV+dgbNVq
LFV8G8FKZ4FZAIBU8XCKE+AOjRdhqnyz3B8+ivekNXyYnAEzdNUIyC6+QIgK4Rd
Y+ShRJK2nXZ5JUbz+FfwpzYYBVEaGg8dKK7nRcw=
-----结束RSA私钥------”;
专用静态只读字符串xmlKKEY="(2)在一个研究中,我们发现了一个新的研究成果,一个新的研究成果,一个新的研究,一个新的研究,一个新的研究,一个新的数据。Q==AQABPP

P2个研究的一个研究,这个研究的结果是一个新的研究项目的一个中国中国政府的一个中国政府在这两个中国的研究中,在中国在中国的中国在这方面是一个中国的一个中国的中国。2个中国在中国在中国的中国的知识是一个中国的知识。2个中国的知识。2+2+2+2+2+2+2+2+2+2+2+2+2+2+8+8+8+8+8+8+8+8+8+8+8+8+8+8+8=8=8=8=8=8=8=8=8=8=8 DKK7NRCW=MTauiAkCcIuZW+SjiI4eVzNuMRPWGv3KGh4y0wzIN1YkvQvRgi9vTfY5AqGK1SRtlwcLuXJz2MyYUpcK5yJXMQ==”; 私有只读静态字符串PKEY=@” -----开始公钥----- MFWWDQYJKOZHIHVCNAQEBQADSWAWSAJBALRZ8NKQ+vpVBnZTNTM/JARDRTKPDS6 c59+FB4CEHF4TJ959EWHDXP0NECZXYEYGJOVMJGSHOO59YOQXCGEUCAWAAQ== -----结束公钥------”; 私有静态只读字符串xmlPKEY=“uvPycqr6+lUGdlM1Mz+NpENFN0o91Lpzn34VvhwQcXhOP3n0RYd3Gk/sd4lndh7kamhuymaygw6jn1hibdwz5q==AQAB”;


提前感谢。

使用我自己的密钥对此进行了测试,效果良好,因此问题很可能与您的密钥XML有关。您可以添加密钥以及用于调用加密和解密方法的代码吗?@Syon谢谢,我已经添加了密钥。您的密钥也适用于我。您显示结果的方式是否可能存在问题,或者使用您试图解密的数据?@Syon我试图解密的是一个32字节(256位,数据的用途在这一点上非常明确)数组,它通过相同的代码成功加密。数据使用Random.NextBytes()填充-这可能是罪魁祸首吗?Random.NextBytes()不会引起问题,被加密的数据可以是任何东西。我的意思是,问题可能不是算法或密钥,而是您调用和算法以及显示结果的方式。复制问题的完整示例(void Main和all)可能会有所帮助。