【问题标题】: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 格式.....

    【讨论】:

      猜你喜欢
      • 2020-07-15
      • 2019-07-25
      • 2018-11-25
      • 2013-08-15
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 2014-06-16
      • 1970-01-01
      相关资源
      最近更新 更多