簡體   English   中英

CryptographicException:未知錯誤“ 80007005”。 在.Net Compact Framework中調用RSACryptoServiceProvider.Decrypt()時

[英]CryptographicException: Unknown Error '80007005'. when calling RSACryptoServiceProvider.Decrypt() in .Net Compact Framework

我正在嘗試使用RSACryptoServiceProvider進行加密/解密。 加密可以正常工作,但是Decrypt方法會在消息中引發異常:

未知錯誤“ 80007005”。

這是代碼:

Byte[] plainData = encoding.GetBytes(plainText);
Byte[] encryptedData;
RSAParameters rsap1;
Byte[] decryptedData;
using (RSACryptoServiceProvider rsa1 = new RSACryptoServiceProvider())
{
   encryptedData = rsa1.Encrypt(plainData, false);
   rsap1 = rsa1.ExportParameters(false);
}

using (RSACryptoServiceProvider rsa2 = new RSACryptoServiceProvider())
{
   rsa2.ImportParameters(rsap1);
   decryptedData = rsa2.Decrypt(encryptedData, false);
}

decryptedText = encoding.GetString(decryptedData, 0, decryptedData.Length);

有人知道解決方法嗎?

謝謝!

修正了代碼! 我想我根本不需要指定容器...

Byte[] plainData = encoding.GetBytes(plainText);
Byte[] encryptedData;
Byte[] decryptedData;
using (RSACryptoServiceProvider rsa1 = new RSACryptoServiceProvider())
{
    RSAParameters rsap1 = rsa1.ExportParameters(false);

    using (RSACryptoServiceProvider rsa2 = new RSACryptoServiceProvider())
    {
        rsa2.ImportParameters(rsap1);
        encryptedData = rsa2.Encrypt(plainData, false);
    }

    decryptedData = rsa1.Decrypt(encryptedData, false);
}

decryptedText = encoding.GetString(decryptedData, 0, decryptedData.Length);
rsap1 = rsa1.ExportParameters(false);

通過將false傳遞給此方法,您選擇不導出私鑰。 沒有私鑰,將很難解密數據。 嘗試將true傳遞給export方法。

使用RSA時,您需要了解密鑰管理的基礎知識。 您沒有指定加密期間要使用的密鑰容器。 您希望使用什么鑰匙? 默認用戶密鑰? 機器鑰匙? 您知道默認的用戶密鑰和機器密鑰什么嗎? 更不用說為什么您要使用RSA加密任何內容的明顯問題了? RSA加密用於加密會話密鑰,並且有專用的密鑰交換協議來處理此問題(即像TLS這樣的面向流或像S / MIME這樣的文檔)。 您應該使用這些現成的協議之一,而不要推出自己的加密方案。 保證密鑰管理的安全。

當您嘗試解密時,解密器是否擁有與加密期間使用的公鑰相對應的私鑰?

看到:

請注意,這些只是MSDN中的簡單代碼示例,如果不對加密技術(尤其是密鑰管理)有深入的了解,則任何人都不應使用它們。

我建議您考慮使用像SslStream這樣的高級類來加密數據交換。 對於文檔存儲加密方案,最好使用OS功能或依賴ProtectedData類。 同樣,除非您真的知道自己在做什么,否則不要進行自己的加密(在這種情況下,您將不會在這里提出問題)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM