【问题标题】:How to decrypt encrypted JWT token using crypto in NodeJS如何在 NodeJS 中使用加密解密加密的 JWT 令牌
【发布时间】:2023-01-14 14:15:34
【问题描述】:
我们正在使用 node-jose 库来使用私钥解密 JWT 令牌,但我们希望使用 NodeJS 包中内置的加密来实现相同的功能,以消除依赖性。下面是使用 node-jose 库的代码
const keystore = jose.JWK.createKeyStore();
// Add the private key to the keystore
等待 keystore.add(privateKey, 'pem');
// Use the private key to decrypt the JWE
const decrypted = await jose.JWE.createDecrypt(keystore).decrypt(paylaod);
沙盒示例链接-https://codesandbox.io/s/jwe-example-uqqmr?file=/src/index.js:2023-2031
【问题讨论】:
标签:
node.js
jwt
cryptography
node-crypto
【解决方案1】:
没有比这更容易的了.. 要使用 Node.js 中的内置加密包解密加密的 JWT 令牌,您可以使用 crypto.privateDecrypt() 方法......
const crypto = require('crypto');
const privateKey = `-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----`;
const payload = 'your_encrypted_jwt_token';
const decrypted = crypto.privateDecrypt(
{
key: privateKey,
padding: crypto.constants.RSA_PKCS1_OAEP_PADDING
},
Buffer.from(payload, 'base64')
).toString();
console.log(decrypted);
您可以根据使用的加密算法将填充选项更改为 RSA_PKCS1_PADDING 或 RSA_NO_PADDING。
还要确保私钥是 PEM 格式.....