当前位置: 首页 > 知识库问答 >
问题:

如何从RSA密钥对创建JWK?

姜嘉良
2023-03-14

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

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代码来做到这一点。

共有1个答案

公羊凌
2023-03-14

下面是一个如何使用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

 类似资料:
  • 在本章中,我们将重点介绍使用Python逐步实现RSA算法。 生成RSA密钥 生成RSA密钥涉及以下步骤 - 创建两个大素数,即p和q 。 这些数字的乘积称为n ,其中n= p*q 生成与(p-1)和(q-1).相对素数的随机数(q-1). 将数字称为e 。 计算e的模逆。 计算的倒数将被称为d 。 生成RSA密钥的算法 我们需要两个使用Python生成RSA密钥的主要算法 - Cryptomat

  • 我在创建/使用在PHP中创建和使用的RSA密钥方面有一个问题。问题是,(公共和私人)密钥应该在不同的服务器之间交换(例如,当移动用户帐户时)。 现在,PHP的openssl库没有提供任何关于密钥创建格式的详细信息。最新文档位于http://php.net/manual/en/function.openssl-pkey-export.php只是声明它是“PEM格式”,但没有说明它是在PKCS#1还是

  • 我们需要使用Azure key vault创建RSA密钥对,并将RSA公钥复制到外部系统。其要求是外部系统使用公钥加密数据,内部系统与azure key vault对话并对数据进行解密。我还没有访问Azure key vault的权限,所以需要查看文档。我有两个基本问题: > 有没有一种方法可以使用Azure portal以文本格式导出RSA公钥,而不使用API(https://docs.micr

  • 我需要使用私钥和公钥读取OpenID Connect流中的加密ID令牌。不需要证书。 首先我跑了: openssl req-新-新密钥rsa:2048-密钥输出密钥。pem-pubkey-out pubreq。pem-SUB“/CN=我的密钥” 获得了公钥和私钥。 然后我跑了: openssl pkcs12-导出-inkey密钥。pem-out encryptedprivatekeytest。p1

  • 问题内容: 我需要从文件中读取RSA私钥以对JWT进行签名。我发现了一些有关如何将生成的RSA密钥保存到磁盘的示例,但是没有任何示例显示如何基于文件中的预生成密钥来构建密钥结构。 密钥是这样生成的: 示例密钥: 问题答案: 的组合和应该做的伎俩: 如果您坐在的是PKCS#8编码密钥,则可以执行以下操作:

  • 生成用于消息加密和解密的密钥对。 调用: web3.shh.newKeyPair([callback]) 参数: callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为返回结果 返回值: String - 密钥对生成成功则返回密钥ID,否则返回错误信息 示例代码: web3.shh.newKeyPair() .then(console.log); > "5e