【问题标题】:Generate a 2048 key with custom exponent size?生成具有自定义指数大小的 2048 键?
【发布时间】:2018-03-12 12:05:55
【问题描述】:

有没有办法使用 RSACryptoServiceProvider 和自定义指数生成 2048 RSA 密钥对?

new RSACryptoServiceProvider(2048); // = 65537 always

例如,我想将指数设置为65535,但硬编码的值似乎是65537

我环顾四周,但找不到任何信息。

我正在尝试使用RSACryptoServiceProvider 生成密钥对,而不是导入现有密钥。

我知道导入一个已经存在的键,我可以定义模数、指数和其他因素。

如果不可能,我有什么选择?

【问题讨论】:

  • NIST 需要 65537:nvlpubs.nist.gov/nistpubs/SpecialPublications/… 良好的背景资料is here
  • @HansPassant 我正在将客户端/服务器从 c++ 移植到 c#,客户端当前仅使用 65535 来接收我不确定何时会更新所有客户端变体的公钥。跨度>
  • 嗯,ImportParameters() 是关键。请注意,答案中的代码可能对 Reverse() 帮助太大。
  • @HansPassant 抱歉。我不明白,不会改变已经生成的密钥对的指数简单地杀死它吗?

标签: c# rsacryptoserviceprovider


【解决方案1】:

您可以使用Bouncy Castle 密码库。使用RsaKeyPairGenerator 类生成密钥,RsaKeyGenerationParameters 用于设置公共 RSA 指数。请参阅here 生成密钥对的示例。但要注意指数的选择。公共 RSA 指数应该是 Fermat Number。有关选择指数的更多详细信息,请参阅问题Impacts of not using RSA exponent of 65537

另请参阅有关生成证书的有用帖子Using Bouncy Castle from .NET。为了您的方便,您可以生成 Bouncy Castle 证书并将其转换为 .NET X509Certificate2 对象。

更新:

我认为this question 中使用RSACryptoServiceProvider 的示例可能会对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-16
    • 2011-05-20
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    相关资源
    最近更新 更多