【问题标题】:C#: How to load a private key into RsaSecurityKey in .net Framework/Standard?C#:如何将私钥加载到 .net Framework/Standard 中的 RsaSecurityKey?
【发布时间】:2022-06-20 09:04:49
【问题描述】:

我需要生成一个带有私钥的 RsaSecurityKey 来签署 JWT。

我的代码在 net5.0 中工作,但我需要该代码在 .net 标准/框架库中工作。

这是工作代码:

        private static RsaSecurityKey GetRsaKey(byte[] privateKey)
        {
            using RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(2048);

            rsa.ImportRSAPrivateKey(new ReadOnlySpan<byte>(privateKey), out int _);
            RSAParameters @params = rsa.ExportParameters(true);

            return new RsaSecurityKey(@params);
        }

很遗憾,rsa.ImportRSAPrivateKey 在 .net Standard 中不可用。

我还没有找到如何替换那块。

有人知道我们是如何使用 .net Framework 做到这一点的吗?

谢谢。

【问题讨论】:

  • 你可以在Web.config中定义private key并从中获取。
  • @MukarramJavid 仅适用于 .net framework asp.net,不适用于 .net core
  • 一种方便的方法是使用 BouncyCastle 并导入 PKCS#1 密钥,例如PemReader.
  • @DanielA.White 它也适用于 .NET 5.0。从 ConfigurationManager 类中读取 appSetting.json 中的 Keys

标签: c# jwt rsa signing


【解决方案1】:

以下代码适用于 .net 4.0 及更高版本我有相同的要求 该代码使用来自 nuget 的 bouncycastle 和 jose.jwt 来生成 jwt

这是我找到并测试它的代码片段

https://gist.github.com/ssippe/8fc11c4d7e766e66f06db0431dba3f0a

在主函数中

claims2 将您传递的 json 有效负载返回给您

jwt = 令牌

你可以在 jwt.io 上测试它 将 jwt 放在 section 中,底部粘贴 public 和 private 。

如果是有效的签名就会有效

claims 是有效载荷。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 2014-07-28
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多