如何在 javascript 中解密 PKCS#8 加密私钥

How to decrypt PKCS#8 encrpyted private key in javascript

我正在研究 ServiceNow - 使用 rest 的 BOX 集成 API。为了生成访问令牌,我需要生成一个 JWT。

我需要一个私钥来签署 JWT。

他们提供了私钥,但它是加密格式的。

-----BEGIN ENCRYPTED PRIVATE KEY-----
*******Key here********** 
-----END ENCRYPTED PRIVATE KEY-----

我还获得了解密密码。

我不知道如何在 ServiceNow 中解密上面的私钥。

他们在这里给出了其他语言的示例:https://developer.box.com/docs/construct-jwt-claim-manually#section-2-decrypt-private-key

请帮助我在 javascript 纯实现中完成这项工作。

谢谢,

阿里

从您在上面发布的内容来看,您似乎收到了 PKCS#8 格式的密钥 https://en.wikipedia.org/wiki/PKCS_8

从一些快速谷歌搜索来看,这个库可能是提取此值的最佳选择。 https://github.com/kjur/jsrsasign

这是该库中对此进行解码的代码:

https://github.com/kjur/jsrsasign/blob/d282c71cee92000c4807bcbf2212fedf3f22bd84/src/keyutil-1.0.js#L77

https://github.com/kjur/jsrsasign/blob/d282c71cee92000c4807bcbf2212fedf3f22bd84/src/keyutil-1.0.js#L557-L571

这是他们在单元测试中使用的。可能与您需要调用的方式类似。

https://github.com/kjur/jsrsasign/blob/d282c71cee92000c4807bcbf2212fedf3f22bd84/test/qunit-do-crypto-sigini.html#L222