【问题标题】:System.Security.Cryptography.Cryptographic Exception {"Key does not exist.\r\n"}System.Security.Cryptography.Cryptographic Exception {"密钥不存在。\r\n"}
【发布时间】:2013-09-02 06:54:33
【问题描述】:

我正在我的 C# 程序中从 XML 字符串中读取私钥和公钥。加密(使用私钥)工作正常。但是当涉及到解密(使用公钥)时,它会引发以下错误。

System.Security.Cryptography.Cryptographic Exception {“密钥不存在。\r\n”}

var rsa = new RSACryptoServiceProvider();

rsa.FromXmlString(_privateKey);
rsa.FromXmlString(_publicKey);

byte[] messagee = Encoding.UTF8.GetBytes("win win win");

byte[] encrypted = rsa.Encrypt(messagee, false);
string encString = Encoding.UTF8.GetString(encrypted);

byte[] decrypt = rsa.Decrypt(encrypted,false);
string decString = Encoding.UTF8.GetString(decrypt);

这是为什么呢?我到处搜索,但找不到任何解决方案。

提前致谢。

【问题讨论】:

  • 哪一行出错了?
  • @ : - byte[] 解密 = rsaa.Decrypt(encrypted,false);
  • 对加密的字节做UTF8.GetString会出问题,加密的结果不是一个有效的字符串,把它当作一个字节序列来处理。

标签: c# .net encryption cryptography rsa


【解决方案1】:

看看这个link,它可能会有所帮助。 问题出在以下几行...

rsa.FromXmlString(_privateKey);
rsa.FromXmlString(_publicKey);

...因为私钥被公钥覆盖了..

【讨论】:

    猜你喜欢
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 2018-01-26
    相关资源
    最近更新 更多