RSACryptoServiceProvider - 解密 - 参数不正确

Lea*_*ini 7 c# asp.net encryption

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

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

在此处输入图片说明

在此处输入图片说明

搜索问题时,我可以阅读评论,建议更改分配给 IIS 中网站的应用程序池中的用户。我试过了,但没有用。

在第二张图片中显示了大小计算,但我不确定,因为KeySize每 8的除法减去 11 。

我在 .net 4 中使用 VS2010。asp.net proyect 使用 IIS 之类的服务器,不使用 Visual Studio 开发服务器

我可以尝试解决什么问题?

[解决方案]

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

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

Ghe*_*wet 8

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


Tim*_*nem 5

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

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

另一件要尝试的事情是提供中truefOAEP参数,因为rsa.Decrypt解密设置为 false 的 OAEP 填充密文fOAEP将导致The parameter is incorrect抛出异常。