2016-05-04 62 views
0

我需要解密文本,但我收到消息The parameter is incorrectRSACryptoServiceProvider - 解密 - 參數不正確

證書越來越正確,它在Windows中註冊。

enter image description here

enter image description here

搜索關於這個問題,我可以讀評論暗示改變分配給IIS網站的應用程序池的用戶。我試過但沒有工作。

在第二圖像顯示尺寸計算,但我不知道,因爲減11至每8

KeySize divition我使用VS2010和.NET 4 asp.net proyect使用IIS像服務器,不使用Visual Studio開發服務器

我可以嘗試解決該問題?

[溶液]

與過時的證書生成在解密方法所分配的加密文本。

該文本被證書加密,但隨後被更改,當嘗試解密帶有其他證書的文本文本時,該方法失敗。

回答

1

當使用非對稱密碼系統(例如RSA)加密數據時,輸出的大小與模數大小相同。另外,輸入的大小必須小於或等於模數大小。因此,當您嘗試解密密文時,密文的大小必須等於模數的大小(即密鑰大小爲1024位,即128字節)。

所以,你不應該分割data變量,直接餵給它RSACryptoServiceProvider.Decrypt

另一件事是嘗試在rsa.DecryptfOAEP參數提供true因爲與fOAEP設置爲false將導致The parameter is incorrect引發異常解密OAEP填充密文。

+0

我添加了關於大小模塊演算的額外信息。我可以看到模量大小是計算出來的,但是不確定,因爲減去了11. –

+0

好的。在這種情況下,嘗試在解密方法中爲'fOAEP'填充參數提供'true'。當解密OAEP填充的密文而未指定fOAEP標誌時,您會得到您的例外。 –

+0

感謝您的幫助,我可以解決問題。證書已更改,但加密文本是由其他人創建的 –

0

如果私鑰或公鑰已更改,則會發生此異常。