繁体   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