如何在 Node.js 中获取 RSA 公钥的模数和指数

2024-06-03

我正在创建一个ACME https://www.rfc-editor.org/rfc/rfc8555客户端和我需要找到 RSA 公钥的模数和指数,我使用以下代码生成该公钥:

crypto.generateKeyPairSync('rsa', {
    modulusLength: 4096,
    publicKeyEncoding: {
        type: 'spki',
        format: 'pem'
    },
    privateKeyEncoding: {
        type: 'pkcs8',
        format: 'pem'
    }
});

我需要模数和指数,以便我可以在JWK https://www.rfc-editor.org/rfc/rfc7517我的部分JWS https://www.rfc-editor.org/rfc/rfc7515:

alg: 'RS256',
jwk: {
    kty: 'RSA',
    e: '...',
    n: '...'
},
nonce,
url: directory.newAccount

我已经成功地解码了公钥base64 to hex使用以下行,但我不确定下一步该怎么做:

Buffer.from(publicKey, 'base64').toString('hex');

如何在 Node.js 中找到 RSA 公钥的模数和指数?



EDIT 1

我发现 Node.js 默认使用公共指数 65537:Node.js 文档 https://nodejs.org/dist/latest-v14.x/docs/api/crypto.html#crypto_crypto_generatekeypairsync_type_options.


这就像小菜一碟一样简单;它不需要第三方库

import { createPublicKey } from 'crypto'

const pemPublicKey = `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAphRAj+tRfbrYwnSFbWrj
...
vQIDAQAB
-----END PUBLIC KEY-----
`
const publicKey = createPublicKey(pemPublicKey)
console.log(publicKey.export({ format: 'jwk' }))

它将返回对象:

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

如何在 Node.js 中获取 RSA 公钥的模数和指数 的相关文章

随机推荐

  • 为什么 Go 中不允许在包级别声明短变量?

    这是允许的 package main var a 3 但这不是 package main a 3 为什么不 为什么不能将函数外部的短变量声明视为没有类型的常规声明 只是为了简化解析 根据伊恩 兰斯 泰勒的说法这个线程 https group
  • 如何从命令行执行 InDesign 扩展脚本?

    我需要从命令行 Windows 执行 InDesign 的 jsx 脚本 对于 Illustrator 可以使用以下命令轻松工作 C Program Files Adobe Adobe Illustrator CS6 64 Bit Supp
  • Reality Composer – 如何永久旋转对象?

    我正在使用 Reality Composer 开发适用于 iOS 的 AR 应用程序 在我的场景中 我有一个简单的球体 我希望它永远旋转 而不必每次都重新启动动画 目前 我在场景出现时立即为球体设置旋转行为 旋转持续 20 秒 我单击了循环
  • “单体”是什么意思?

    我在课堂上看到过它 我怀疑这意味着该类可以被分解为逻辑子单元 但我找不到一个好的定义 你能举一些例子吗 谢谢您的帮助 编辑 我喜欢聪明的回复 但我显然指的是软件上下文中的 整体 我了解巨石 巨石 支石墓以及所有与石头相关的背景 哎呀 我的国
  • 将 JS 库 xml2js 与 Angular 2 结合使用

    我正在尝试在 Angular 2 带有 TypeScript 的 RC 1 Web 应用程序中使用 xml2js 作为 XML 解析器 但是我只收到一些错误并且没有有效的解决方案 这是我一步一步所做的 通过安装 xml2jsnpm inst
  • 如何从investing.com 上抓取数据?

    我想从以下位置抓取 EUR USD 的 5 分钟技术摘要 https au investing com currencies eur usd https au investing com currencies eur usd 但我不知道该怎
  • 内联表值 UDF 能否优于 SELECT 列列表中的等效标量 UDF?

    这个问题源于SQLServer 为什么要避免表值用户定义函数 https stackoverflow com questions 1081057 sqlserver why avoid table valued user defined f
  • 使用服务主体连接 Azure SQL Server

    我想通过 Python 使用 Azure 服务主体连接 Azure SQL 数据库 请帮我 我可以使用服务主体通过 ADF 连接它 有一个图书馆Microsoft Azure Active Directory Authentication
  • C# 中的应用程序关闭事件

    我正在使用 NAudio 编写音乐播放器 在关闭播放器之前 我想调用一些停止播放的方法 我该怎么做呢 WinForms 订阅Application ApplicationExit http msdn microsoft com en us
  • UIAlertController 显示延迟

    我在我的应用程序上遇到了 UIAlertController 问题 现已迁移到 iOS8 其中包含日期选择器 下面是代码 UIAlertController AlertView UIAlertController alertControll
  • 我用 MediaRecorder 录制的文件无法播放

    我正在使用 MediaRecoder 录制声音 但录制完成后无法播放 我尝试使用Google Play Music ES Media Player 甚至将其上传到电脑并尝试使用Winamp打开它 没什么玩的了 AUDIO RECORDER
  • 无法在 Eclipse 中运行从 Git 导入的项目

    我的 Eclipse 工作区中有一个来自 Github 的项目 通过 File gt Import gt Projects from GIT 但是 我无法运行该示例 因为 运行方式 下的唯一选项是 运行配置 转到 运行配置 后 我单击 浏览
  • 使用 React JS 进行多个文件上传

    我试图弄清楚如何在 React JS 中循环多个文件上传 最终我希望能够循环遍历每个文件 以便我可以判断是否仅上传 PNG JPG 和 MP3 文件 我还希望 PNG JPG 文件限制为 5MB MP3 文件限制为 2MB 到目前为止 我不
  • 为什么 C# 中 bool 数据类型的大小不是只有 1 位?

    我刚刚学习 C 并深入研究数据类型 为什么不是一个bool数据类型大小为 1 位 看起来它只能保存两个值之一 true 或 false 那么这不是只占用 1 位空间来表示该值吗 是因为值的最小 可寻址 大小是一个字节 8 位 吗 这个帖子
  • MVC 5 中的“缓存配置文件”

    我是 MVC 的初学者 我有一个项目要从 MVC2 转换到最新版本的 MVC 我读了一些关于MVC 4的书 所以我开始了解主要机制 但是 在转换我的 MVC 2 解决方案时 我遇到了一个属性问题 OutputCache 例如 我有多个这样的
  • C++:在现实世界中添加和重新定义默认参数

    在 C 中可以添加或重新定义函数的默认参数 让我们看一下例子 void foo int a int b int c 1 std cout lt lt foo lt lt a lt lt lt lt b lt lt lt lt c lt lt
  • 有没有办法更改 UITabBar 或 UITabBarItem 中的文本位置?

    这是我打算放在屏幕上的自定义选项卡栏 然而 我的搭档希望文字稍微向上一些 我怎样才能这样做呢 为什么不为视图控制器设置一个空的标题属性 并将标题添加到选项卡的自定义图像中 UPDATE 为了回答的完整性 来自评论和ios标签栏在没有图像时将
  • 如何使用 jquery 检查输入 type="file" 是否有文件?

    我有一个文件上传控件
  • Some() 在变量赋值的左侧做什么?

    我正在阅读一些 Rust 代码 并且遇到了这一行 if let Some path env args nth 1 这个函数内部 fn main if let Some path env args nth 1 Try reading the
  • 如何在 Node.js 中获取 RSA 公钥的模数和指数

    我正在创建一个ACME https www rfc editor org rfc rfc8555客户端和我需要找到 RSA 公钥的模数和指数 我使用以下代码生成该公钥 crypto generateKeyPairSync rsa modul