如何从 RSA 密钥对创建 JWK?

Posted

技术标签:

【中文标题】如何从 RSA 密钥对创建 JWK?【英文标题】:How to create JWK from RSA Key pair? 【发布时间】:2019-05-24 14:40:00 【问题描述】:

假设我有一个表示 RSA 密钥对的 python 结构如下:

rsa_key_pair = 
    'private_key': '-----BEGIN PRIVATE KEY-----\nMIIEvAIBADAN__OBSCURED__qxu3sWAlY/bstTB5WfX8PA==\n-----END PRIVATE KEY-----\n',
    'public_key': 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCDDqGTiBYyoB9T5Haow5gcPBIIiltLVyM4vo8Txia1czgrk2XGH5t4dsWrcXIXjQafNb7PKelXZdRU36vIIAaZCZ0As5LtkC5D93+KO9PFLGkHxWi2G43naR9hOnrKliMjOd+JRUdApdY8c/wYJbDxGGuw7W9e3MsLABFEK+TnPTVJtO8Ix78FiuHRooWfU5ph7clfTeyundN2BNv8mO6ZSBiBAk6tN8Fwpljs96Z/3HnMQutX1/AFkMn5h+E0EV4CgLPvtRazfzoWNlIiXGmiVUVHrM1wna9jT/jyb7aoxkthkAXb6NNyCW/Znxq45Ozy27kZcw/X4WQ0QMmpgfX'

如何编写 python 代码来生成可用于验证使用此 RSA 私钥签名的 JWT 的 JWK?使用的算法是 RSA256。

这个网站mkjwk 完成了我想做的事情。但我正在尝试在 python 代码中做到这一点。

【问题讨论】:

我已经看过那个文档了。它在哪里显示如何从 RSA 密钥生成 JWK?我没看到。我只看到如何使用 JWK 来决定,而不是如何生成它。 对不起,我读了你的问题。这是一个相关的事情:python-jose.readthedocs.io/en/latest/jwk/api.html 【参考方案1】:

这是一个如何使用Authlib 转储 JWK 的示例:

from authlib.jose import jwk

jwk.dumps(rsa_key_pair['public_key'], kty='RSA')
jwk.dumps(rsa_key_pair['private_key'], kty='RSA')

这是你的公钥的结果:


  "kty": "RSA",
  "n": "wgw6hk4gWMqAfU-R2qMOYHDwSCIpbS1cjOL6PE8YmtXM4K5Nlxh-beHbFq3FyF40GnzW-zynpV2XUVN-ryCAGmQmdALOS7ZAuQ_d_ijvTxSxpB8VothuN52kfYTp6ypYjIznfiUVHQKXWphp8GCWw8RhrsO1vXtzLCwARRCvk5z01SbTvCMe_BYrh0aKFn1OaYe3JX03srp3TdgTb_JjumUgYgQJOrTfBcKZY7Pemf9x5zELrV9fwBZDJ-YfhNBFeAoCz77UWs386FjZSIlxpolVFR6zNcJ2vY0_48m-2qMZLYZAF2-jTcglv2Z8auOTs8tu5GXMP1-FkNEDJqYH1w",
  "e": "AQAB"

通过http://docs.authlib.org/en/latest/jose/jwk.html

【讨论】:

对于弃用警告:gist.github.com/lepture/7e38d505c1e22e6e913d8625e5c52cca#jose

以上是关于如何从 RSA 密钥对创建 JWK?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 JWK 密钥集中选择有效密钥进行苹果登录令牌验证?

从 PEM 导入 JWK 时如何覆盖自动计算的孩子

Python 中的 Web Crypto API JWK 用法

如何使用 node-jose 生成加密的 JWE

IRS 电子服务帐户的 JSON 网络密钥 (JWK)

如何从字符串获取 PKCS8 RSA 私钥/从 XML 获取 RSA 密钥对