首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从RSA JWK中提取公钥和私钥?

如何从RSA JWK中提取公钥和私钥?
EN

Stack Overflow用户
提问于 2018-06-18 07:40:41
回答 1查看 6.2K关注 0票数 5

我正在尝试用我得到的JWK签署一些数据。

到目前为止,我已经尝试用jwt.io来完成这个任务,标题是

代码语言:javascript
复制
{ "alg" : "RS256", "typ" : "JWT" }

有效载荷是

代码语言:javascript
复制
{ "iss" : "4@john" }

现在我需要一个公用钥匙和一个私钥来签字。我被告知要从提供的JWK中提取这些密钥,但我似乎只能从中提取一个公钥。

我使用了JWK到pem,但是当提供了JWK时,它只公开了公钥。但是要与RS256签约,我需要一个公钥和一个私钥,我以为私钥已经嵌入到JWK中了,但我似乎无法提取它。

所以我的问题是,如何从JWK中提取公钥和私钥?

JWK看起来是这样的:

代码语言:javascript
复制
"ServicePrincipalKey": {
    "k": null,
    "kid": "urn:service:john:doe:4",
    "kty": "RSA",
    "use": null,
    "n": "rT-...skQ",
    "e": "A...B",
    "x5t": null,
    "d": "CP9...bsQ",
    "p": "7dG...PDk",
    "q": "un4...oxk",
    "dp": "HdF...m4Xk",
    "dq": "XGN...PMk",
    "qi": "0es...UDI",
    "nbf": "0001-01-01T00:00:00",
    "exp": "0001-01-01T00:00:00"
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-18 11:55:40

找到了jwk to pem的答案。有一个选项可以生成私钥和公钥。

在runkit上,我执行了以下代码:

代码语言:javascript
复制
    var jwkToPem = require("jwk-to-pem")

    var jwk = {
    "k": null,
    "kid": "urn:service:john:doe:4",
    "kty": "RSA",
    "use": null,
    "n": "rT-...skQ",
    "e": "A...B",
    "x5t": null,
    "d": "CP9...bsQ",
    "p": "7dG...PDk",
    "q": "un4...oxk",
    "dp": "HdF...m4Xk",
    "dq": "XGN...PMk",
    "qi": "0es...UDI",
    "nbf": "0001-01-01T00:00:00",
    "exp": "0001-01-01T00:00:00"
    }

    var publicPEM = jwkToPem(jwk);
    console.log(publicPEM);

    var options = {"private" : true} //important this will set jwkToPem to output the private key
    var privatePEM = jwkToPem(jwk, options);
    console.log(privatePEM);

这会将一个公钥和一个私钥输出到控制台。

现在,通过将这些公钥和私钥填充到jwt.io中,我能够生成一个JWT。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50904722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档