【问题标题】:How do I use RS256 algorithm with RSACryptoServiceProvider如何将 RS256 算法与 RSACryptoServiceProvider 一起使用
【发布时间】:2020-08-06 23:36:46
【问题描述】:

根据microsoft docs,构造函数的格式为:

public RSACryptoServiceProvider (int dwKeySize);

使用指定密钥大小的随机密钥对初始化 RSACryptoServiceProvider 类的新实例。 dwKeySize = 要使用的密钥的大小(以位为单位)。

那么如果我想使用 RS256,这是否意味着我需要传入 2048 的参数?

我有点困惑,因为默认构造函数(即没有传递参数)创建一个 1024 位密钥。我不确定他们为什么会使用 1024。

【问题讨论】:

  • 如果您计划生成新的公钥/私钥对 - 那么是的,您必须将 2048 传递给构造函数。如果您打算导入现有密钥 - 传递给构造函数的值无关紧要。
  • RS256 通常指的是 JWT 令牌签名方法,即 RSA + SHA256 表示使用 RSA 对有效负载的 SHA256 哈希进行签名。 RSA 本身不是“X 字节”,但密钥大小将决定可以使用 RSA 签名的数据的最大大小,这意味着您至少需要一个 2048 的密钥用于RS256

标签: c# .net rsa


【解决方案1】:

感谢 cmets,我现在有了更好的理解。密钥大小实际上并不是使用的算法。密钥大小决定了破解的难易程度。 2048 是使用 RS256 时推荐的最小密钥大小(但理论上您可以使用不同的大小)。如果使用 Jose JWT 库,您将说明使用的算法是什么。

var rsa = new RSACryptoServiceProvider(2048); //Create keys with size 2048 bits
string token=Jose.JWT.Encode(payload, rsa, JwsAlgorithm.RS256); //Here we state the algo is RS256

【讨论】:

    猜你喜欢
    • 2018-08-06
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    相关资源
    最近更新 更多