要解密的数据超过了128个字节的模数的最大值。 RSA DECRYPTION c#

时间:2014-02-06 13:50:07

标签: c# encryption cryptography rsa x509certificate

我不知道在使用X509证书中的私钥解密文件时如何解决此异常。 "要解密的数据超过128个字节的模数的最大值。"

byte[] data = File.ReadAllBytes("F:\\enc test\\file1.txt");
X509Certificate2 cer = new X509Certificate2(
    "E:\\fileManagementSrvc\\certificate\\cerpfx.pfx", "12345",
    X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cer.PrivateKey;

byte[] d = rsa.Decrypt(data, false); //GETTING THE EXCEPTION HERE
string s = Encoding.Default.GetString(d);

2 个答案:

答案 0 :(得分:1)

RSA无法加密比RSA密钥模数更长的数据。如果你使用某种填充,这个值变得更小。

通常使用AESTriple-DES等对称分组密码对大数据进行加密,因为它们比RSA等非对称密码更快,并且设计用于加密比密钥大小更长的数据。如果您仍想使用非对称加密,则加密AES / Tripple-DES密钥,该密钥在流程结束时使用RSA短于128字节。

答案 1 :(得分:0)

见这个讨论: RSA Encrypt / Decrypt Problem in .NET 简而言之,对于可以使用rsa加密的消息,确实有一个固定的大小。它不是为加密整个大文件而设计的。