RSACryptoServiceProvider - 解密 - 参数不正确

时间:2016-05-04 18:08:50

标签: c# asp.net encryption

我需要解密文字,但收到消息The parameter is incorrect

证书正确,它已在Windows中注册。

enter image description here

enter image description here

搜索问题,我可以阅读建议更改分配给IIS中网站的应用程序池中的用户的注释。我尝试过但不行。

在第二张图片中显示了尺寸计算,但我不确定,因为每8的KeySize分割减去11。

我正在使用VS2010和.net 4. asp.net proyect使用IIS之类的服务器,不使用Visual Studio Development Server

我可以尝试解决这个问题?

[溶液]

在Decrypt方法中分配的加密文本是在证书过时的情况下生成的。

文本使用证书加密,但随后更改,尝试使用其他证书解密带有文本的文本时,方法失败。

2 个答案:

答案 0 :(得分:3)

使用非对称密码系统(即您的情况下为RSA)加密数据时,输出的大小与模数大小相同。此外,输入的大小必须小于或等于模数大小。因此,当您尝试解密密文时,密文的大小必须等于模数的大小(即,因为密钥大小为1024位,所以大小写为128字节)。

因此,您不应该对data变量进行细分,只需将其直接反馈给RSACryptoServiceProvider.Decrypt

要尝试的另一件事是为true中的fOAEP参数提供rsa.Decrypt,因为解密设置为false的fOAEP的OAEP填充密文会导致{ {1}}抛出异常。

答案 1 :(得分:1)

如果更改了私钥或公钥,则会发生此异常。