生成具有预定义模数和指数的公钥

2023-12-01

"n": "rKZ-1zdz_CoLekSynOtyWv6cPSSkV28Kb9kZZHyYL-yhkKnH_bHl8OpWiGxQiKP0ulLRIaq1IhSMetkZ8FfXH-iptIDu4lPb8gt0HQYkjcy3HoaKRXBw2F8fJQO4jQ-ufR4l-E0HRqwLywzdtAImNWmju3A4kx8s0iSGHGSHyE4EUdh5WKt-NMtfUPfB5v9_2bC-w6wH7zAEsI5nscMXnvz1u8w7g2_agyhKSK0D9OkJ02w3I4xLMlrtKEv2naoBGerWckKcQ1kBYUh6WASPdvTqX4pcAJi7Tg6jwQXIP1aEq0JU8C0zE3d33kaMoCN3SenIxpRczRzUHpbZ-gk5PQ",
"e": "AQAB",

如何从这些值生成公钥?最好通过 python 或 Linux 程序。如果由于值无效而导致问题毫无意义,我很抱歉。

来源是here.


在Python中,你可以使用Python-JOSE

你在链接中得到的是JSON Web 密钥集 (JWKS),一个 JSON 格式的数组JSON Web 密钥 (JWK).

n and e是 RSA 公钥的模数和指数。

功能jwk.construct可以直接从 JWK 创建密钥。然后可以使用该密钥,例如验证 JWT (key.verify).

您还可以使用jwt.decode如下面的代码所示,直接传递 JWK,或以 PEM 格式传递。

from jose import jwk
from jose.utils import base64url_decode

token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlctNjduZWt0WVRjOEpWWVBlV0g1c1dlN1JZVm5uMFN5NzQxZjhUT0pfQWMifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.hiKxeC66LIyVKOXjiOk7iScFPy_5-ATw7hEfqGij8sBZmwXAeTPT5BRFYHitFKSXomGqmy_63LLvg4zbhcTTmNf8XIeDAuLsC32soO5woSByisswWHVf8BgxMkI_FPW_oEtEQ8Xv3FL_1rF9j9Oy3jIjgjqhFhXUtsSQWAeuGYH-OQljFwiuO5Bqexcw-H71OEWvQLQof_6KJ0viJyte8QEwEVridyO834-ppHzeaoW2sTvZ22ZNfxPCew0Ul2V_TxHTtO7ZuJCZ81EmeIV6dYJ2GrYh3UN1x1PHy4-tEn-PL4otlaO3PYOcXfCHxHa6xtPsquzPZJnB1Vq8zULLfQ"

rsa_key = {
    "kty": "RSA",
    "kid": "W-67nektYTc8JVYPeWH5sWe7RYVnn0Sy741f8TOJ_Ac",
    "use": "sig",
    "alg": "RS256",
    "n": "kFpGoVmBmmKepvBQiwq3hU9lIAuGsAPda4AVk712d3Z_QoS-5veGp4yltnyEFYyX867GOKDpbH7OF2uIjDg4-FPZwbuhiMscbkZzh25SQmfRtCT5ocUloQiopBcNAE-sd1p-ayUJWjhPrFoBrBLZHYxVEjY4JrWevQDj7kSeX7eJpud_VuZ77TNoIzj7d_iUuJUUlqF1ZF540igHKoVJJ6ujQLHh4ob8_izUuxX2iDq4h0VN3-uer59GsWw6OHgkOt85TsjMwYbeN9iw_7cNfLEYpSiH-sVHBCyKYQw7f8bKaChLxDRhUUTIEUUjGT9Ub_A3gOXq9TIi8BmbzrzVKQ",
    "e": "AQAB"
}

key = jwk.construct(rsa_key)

message, encoded_sig = token.rsplit('.', 1)
decoded_sig = base64url_decode(encoded_sig + '=' * (4 - len(encoded_sig) % 4)) # looks weird, but without added padding I got errors
res = key.verify(bytes(message, "UTF-8"), decoded_sig)
# jwt.decode(token=token, key=key.to_pem().decode(), algorithms= 'RS256') # with PEM key
payload = jwt.decode(token=token, rsa_key, algorithms= 'RS256') # with JWK
print(res)
print(payload)

结果将是:

真的 {'sub': '1234567890', 'name': 'John Doe', 'admin': True, 'iat': 1516239022}

这意味着可以使用该密钥验证令牌。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

生成具有预定义模数和指数的公钥 的相关文章

  • 为什么 Python 在导入脚本时只保存脚本的字节码?

    既然执行Python字节码会比运行原始源代码更快 因为Python不需要重新编译 为什么Python在导入脚本时只保存编译后的字节码呢 为每个执行的脚本保存 pyc 文件不是更好吗 无论如何 Python 解释器的启动时间都需要时间 即使您
  • 如何(重新)命名 pandas 数据框中的空列标题而不导出到 csv

    我有一个熊猫数据框df1带有一个索引列和一系列未命名的值 我想为未命名的系列指定一个名称 到目前为止 我知道的唯一方法是导出到df1 csv using df1 to csv df1 csv header Signal 然后使用以下命令重新
  • 如果 Excel 文件是由程序创建的,Pandas read_excel 对于具有简单公式的单元格返回 nan [重复]

    这个问题在这里已经有答案了 I use pd read excel读取由以下命令创建的 excel 文件openpyxl并从一个网址下载 解析后的数据框将给出nan如果单元格值是公式 which formula is simply 100
  • str.translate 与 str.replace - 何时使用哪一个?

    何时以及为什么使用前者而不是后者 反之亦然 目前尚不完全清楚为什么有些人使用前者以及为什么有些人使用后者 它们有不同的目的 translate只能用任意字符串替换单个字符 但一次调用可以执行多次替换 它的参数是一个特殊的表 它将单个字符映射
  • scipy.optimize on pandas dataframe

    我试图搜索它 但结果很差 有人可以向我解释一下如何在 Pandas DataFrame 上执行 optimize minimize 以便最小化 DataFrame 中的类别和结果列之间的错误 考虑这个例子 import pandas as
  • Python 转换矩阵

    我有一个如下所示的列表 2 1 3 1 2 3 1 2 2 2 我想要的是一个转换矩阵 它向我显示如下序列 1 后跟 1 的频率是多少 1 后面跟着 2 的频率是多少 1 后跟 3 的频率是多少 2 后跟 1 的频率是多少 2 后跟 2 的
  • 如何使用一个模型中间层的输出作为另一个模型的输入?

    我训练一个模型A并尝试使用中间层的输出name layer x 作为模型的附加输入B 我尝试像 Keras 文档一样使用中间层的输出https keras io getting started faq how can i obtain th
  • 键入的完整命令行

    我想获得输入时的完整命令行 This join sys argv 在这里不起作用 删除双引号 另外 我不想重新加入已解析和拆分的内容 有任何想法吗 你太迟了 当键入的命令到达 Python 时 您的 shell 已经发挥了它的魔力 例如 引
  • 如何计算数据框中按另一列的列值分组的一列的连续字符串值?

    我有以下数据框 Levels Labels Confidence 0 Hands 0 8 0 Leg 0 7 0 Eye 0 9 1 Ear 0 9 1 Eye 0 8 2 Hands 0 9 2 Eye 0 8 3 Eye 0 8 我想检
  • 如何从hdfs读取文件[重复]

    这个问题在这里已经有答案了 我在 project1目录下的hadoop文件系统中有一个文本文件名mr txt 我需要编写 python 代码来读取文本文件的第一行 而不将 mr txt 文件下载到本地 但我无法从 hdfs 打开 mr tx
  • Django 多对多关系(类别)

    我的目标是向我的 Post 模型添加类别 我希望以后能够按不同类别 有时是多个类别 查询所有帖子 模型 py class Category models Model categories 1 red 2 blue 3 black title
  • 设置高亮大括号的 vim 颜色主题

    如何更改突出显示大括号的 vim 配色方案 我希望实际编辑 vim 主题文件以使更改永久生效 问候 克雷格 匹配括号的自动高亮颜色称为MatchParen 您可以通过执行以下操作来更改 vimrc 中的颜色 highlight MatchP
  • 使用 subprocess.Popen() 或 subprocess.check_call() 时程序卡住

    我想从 python 运行一个程序并找到它的内存使用情况 为此 我正在使用 l a out lt in txt gt out txt p subprocess Popen l shell False stdout subprocess PI
  • 如何用正则表达式替换多个匹配/组?

    通常我们会编写以下内容来替换一场比赛 namesRegex re compile r is life re I replaced namesRegex sub r butter There is no life in the void pr
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • python Recipe:列出最接近等于值的项[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 考虑像这样的列表 0 3 7 10 12 15 19 21 我想获得最接近任何值的最近的最小数字 所以如果我通过4 我会得到3 如果我
  • 从迭代器外部将 StopIteration 发送到 for 循环

    有几种方法可以打破一些嵌套循环 他们是 1 使用中断 继续 for x in xrange 10 for y in xrange 10 print x y if x y gt 50 break else continue only exec
  • Python:如何在不先创建整个列表的情况下计算列表的总和?

    通常我们必须 1 声明一个列表 2 使用以下方法计算该列表的总和sum 但现在我希望指定一个以 1 开头 间隔为 4 100 个元素的列表 如下所示 1 5 9 13 17 21 25 29 33 37 我不想涉及数学公式 所以 1 如何在
  • 两种 ODE 求解器之间的差异

    我想知道 两者之间有什么区别ODEINT and solve ivp用于求解微分方程 它们之间有什么优点和缺点 f1 solve ivp f 0 1 y0 y0 is the initial point f2 odeint f y0 0 1
  • Biopython 可以执行 Seq.find() 来解释歧义代码吗

    我希望能够在 Seq 对象中搜索考虑歧义代码的子序列 Seq 对象 例如 以下内容应该是正确的 from Bio Seq import Seq from Bio Alphabet IUPAC import IUPACAmbiguousDNA

随机推荐

  • 当方向改变时如何管理应用程序?

    我有一个正在更改屏幕方向的应用程序 但是 当我更改第一个屏幕的方向并转到下一个屏幕时 更改不会持续 附上图片以便更清楚地理解 主要问题是 当设备旋转时 第一个屏幕会旋转 但第二个屏幕不会以新方向启动 仅当我们在屏幕启动后改变方向时它才会旋转
  • 如何在 Python 类中创建增量 ID

    我想为我创建的每个对象创建一个唯一的 ID 这是该类 class resource cl def init self Name Position Type Active self Name Name self Position Positi
  • 全局静态初始化线程

    我有一个用互斥体保护的集合 初始化后 它只能被读取 所以我在那里不需要互斥体 该集合在全局静态初始值设定项中进行初始化和填充 我知道全局静态初始化是在单个翻译单元内保证的 是否可以保证全局静态初始化是单线程的 我有一个受 Schwarz 计
  • 为什么它不转一圈?以及如何修复它?

    我不确定正在创建的形状的名称是什么 但我认为是圆形和方形的组合 或者可能类似于圆柱体 您可以运行代码来查看它会形成什么形状 您能否推荐一个我可以学习编写游戏代码 基本游戏背后的算法 的网站 我希望你明白我的意思 因为我英语不好 import
  • 当 PictureBox 处于“缩放”模式时裁剪图像的正确部分[重复]

    这个问题在这里已经有答案了 我有一个 PictureBox1 其尺寸模式设置为 拉伸 并且 PictureBox1 PictureBox1 包含一个图像 让我选择它的一部分 然后裁剪它并将裁剪的部分存储在 PictureBox2 中 效果很
  • python中浮点精度的定义是什么?

    我了解到 Erlang 中的 完全等于 运算符 它不仅比较值 还有数字的数据类型 我很好奇 Python 中的工作原理及其唯一的 等于 运算符 所以在确定之后 gt gt gt 1 1 0 True 我想知道浮点精度 然后得到了这个 gt
  • 在 PHP 中从空值创建默认对象?

    仅在将 PHP 环境升级到 PHP 5 4 及更高版本后 我才会看到此错误 错误指向这行代码 Error 从空值创建默认对象 Code res gt success false 我是否需要首先声明我的 res object 你的新环境可能有
  • div 中的居中文本

    div div class left div align center class node div class nodeText h2 test h2 div div class node h2 test h2 div div class
  • mod_rewrite后获取变量

    我有一组遵循以下 htaccess 规则的产品页面 RewriteCond REQUEST FILENAME s RewriteCond REQUEST URI 0 9 html RewriteRule product index php
  • Opencv 和 python 用于自动裁剪

    我想自动裁剪图像 我正在为此使用 ImageMagick 我正在使用的命令 convert 3 jpg fuzz 10 trim trim jpg 我该如何解决 我认为正在设置的模糊因子存在问题 If you want to do this
  • 在sp_executesql中使用@ParmDefinition有什么好处

    DECLARE id int DECLARE name nvarchar 20 SET id 5 SET name Paul 这两个选项有什么区别 Set SQLQueryInnen SELECT FROM someTable WHERE
  • 对多个工作簿和多个工作表中的单元格值求和 - 宏

    我有 50 本练习册 每个有 3 个工作表 我在单元格 A1 到 N1 的每个工作表中都有一个值 我想总结一个工作簿中的所有值 分别在 3 个工作表中 即sheet1工作簿1的A1 sheet1工作簿2的A1 sheet1工作簿50的A1
  • 如何禁用列表的第一项可排序并删除目标

    我有一个项目列表 我想让列表中的第一个项目不可排序且不可移动 列表中的第一项应始终保留为列表中的第一项 但是 我似乎无法让它工作 这是我的排序代码 jQuery gt lineup sortable axis y items ui stat
  • 如何让 MySQL 使用 INDEX 进行视图查询?

    我正在开发一个使用 Java EE 上的 MySql 数据库的 Web 项目 我们需要一个视图来汇总 3 个总共超过 300 万行的表中的数据 每个表都是用索引创建的 但我还没有找到一种方法来利用我们使用 group by 创建的视图中的条
  • .Net 3.5 SP1 的离线安装程序无法正常工作

    我下载了一个 Net 3 5 SP1的大文件 现在 当我尝试在 Windows Server 2012 上安装它时 我得到以下屏幕截图 现在这是一个循环 当我尝试从服务器管理器安装时 我发现安装无法完成 它需要安装盘 这是否意味着如果没有安
  • 静态变量是否可以继承

    我已经在 1000 个位置读到静态变量不能被继承 但是这段代码如何正常工作呢 父类 java public class Parent static String str Parent 孩子 java public class Child e
  • Swift 可编码多种类型

    我尝试解析返回 json 对象的 api 我的问题是 某些键有时是字符串 有时是对象 如以下示例中的键 Value Description null Group Beskrivning av enheten GroupDescription
  • 使用纵横比时 CSS 会忽略子元素的宽度

    我遇到了有关 CSS 的问题aspect ratio在子元素上 我一直在尝试将元素的宽度和高度 两者相同 设置为等于父容器的高度 使用height 100 and aspect ratio 1 然而 这可以实现 使用时父容器似乎忽略了子容器
  • 有没有办法从 SQL 中的日期中减去天数?

    我知道 DATEDIFF d date1 date2 但我不想减去两个日期 而是减去一个日期的天数 例如 2010 04 13 4 2010 04 09 mySQL 可以吗 date sub date interval 4 day
  • 生成具有预定义模数和指数的公钥

    n rKZ 1zdz CoLekSynOtyWv6cPSSkV28Kb9kZZHyYL yhkKnH bHl8OpWiGxQiKP0ulLRIaq1IhSMetkZ8FfXH iptIDu4lPb8gt0HQYkjcy3HoaKRXBw2F