【问题标题】:Cryptographic Exception Invalid flags Specified加密异常 指定的标志无效
【发布时间】:2012-12-21 10:25:45
【问题描述】:

这是我的代码:

        RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(128);

        try
        {              
            string publicKeyXML = rsa.ToXmlString(false);
            string privateKeyXML = rsa.ToXmlString(true);
            int size = rsa.KeySize;
        }
        finally 
        {
            rsa.PersistKeyInCsp = false;
        }

我只是不断收到相同的错误“指定的标志无效”。如果我使用无参数构造函数,则不会抛出异常,并且 keysize 为 1024。

【问题讨论】:

  • 我假设 .net 不支持 128 位 RSA。也许是因为如此小的 RSA 密钥完全不安全。或者可能是因为对于典型的散列,RSA 填充比这个大。 512 位 RSA 密钥非常弱,建议的最小值为 1024 位,即使这样也不是很强大。
  • @CodesInChaos:谢谢!你是对的。我刚刚在 MSDN 上找到了答案!
  • 我正在查看构造函数的文档,但没有找到该语句。
  • 感谢编辑。我没有粘贴正确的链接:P

标签: c# rsa rsacryptoserviceprovider


【解决方案1】:

RSACryptoServiceProvider 不支持 128 位密钥:

RSACryptoServiceProvider 支持从 384 位到 16384 位的密钥长度,以 8 位为增量

引自MSDN - RSACryptoServiceProvider.KeySize Property

【讨论】:

    猜你喜欢
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 2017-06-14
    • 2018-01-22
    • 1970-01-01
    相关资源
    最近更新 更多