【问题标题】:.NET DSACryptoServiceProvider Key Sizes.NET DSACryptoServiceProvider 密钥大小
【发布时间】:2012-07-10 02:50:09
【问题描述】:

我想使用 2048 位 DSA 密钥,并且我使用的是 .NET DSACryptoServiceProvider。我在将关键参数加载到 .NET DSAParameters 对象时遇到问题,因此我编写了以下代码来输出 DSACryptoServiceProvider 的有效密钥大小:

DSACryptoServiceProvider sampleDSA = new DSACryptoServiceProvider();
Console.Write("----- DSA LEGAL KEY SIZES -----\n");
foreach (KeySizes ks in sampleDSA.LegalKeySizes)
{
  Console.WriteLine("Min: " + ks.MinSize.ToString());
  Console.WriteLine("Max: " + ks.MaxSize.ToString());
}

数组中只有一个KeySizes对象,输出如下:

----- DSA LEGAL KEY SIZES -----
Min: 512
Max: 1024

有没有办法使用DSACryptoServiceProvider 获得 2048 位密钥?不能使用 1024 位密钥。

----编辑-----

我列举了所有处理数字签名的 .NET CryptoServiceProvider 类的 LegalKeySizes。结果如下。

System.Security.Cryptography.DSACryptoServiceProvider
Min: 512
Max: 1024

System.Security.Cryptography.RSACryptoServiceProvider
Min: 384
Max: 16384

System.Security.Cryptography.ECDsaCng
Min: 256
Max: 384
Min: 521
Max: 521

我想问的是:有没有办法通过DSACryptoServiceProvider 调整它以使用 2048 位密钥,还是我被锁定在 512-1024 位范围内?

【问题讨论】:

    标签: c# .net security public-key-encryption public-key


    【解决方案1】:

    .NET 4.6.2 添加了 DSACng,它是 DSA 的 FIPS-186-3 兼容实现。 DSACryptoServiceProvider 仅限于 FIPS-186-1(具有 1024 位密钥限制)。

    除了构造对象,你应该避免依赖具体类型,而只是使用 DSA 基类上的成员。

    using (DSA dsaPublicPrivate = new DSACng(2048))
    using (DSA dsaPublic = new DSACng())
    {
        dsaPublic.ImportParameters(dsaPublicPrivate.ExportParameters(false));
    
        byte[] signature = dsaPublicPrivate.SignData(data, HashAlgorithmName.SHA256);
        bool isValid = dsaPublic.VerifyData(data, signature, HashAlgorithmName.SHA256);
    
        ...
    }
    

    【讨论】:

      【解决方案2】:

      根据您发布的合法密钥大小输出,.NET 实现将无法使用超过 1024 位。

      也许其他一些加密货币提供商会起作用?我以前使用过 Bouncycastle (www.bouncycastle.org) .NET 提供程序来处理 .NET 提供程序无法做的事情。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 2015-11-12
      • 1970-01-01
      • 2015-03-13
      • 2020-04-07
      • 1970-01-01
      相关资源
      最近更新 更多