首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用具有node-jose的base 64密钥创建解密

无法使用具有node-jose的base 64密钥创建解密
EN

Stack Overflow用户
提问于 2018-10-29 18:24:55
回答 1查看 539关注 0票数 0

我正在尝试使用the node-jose library来解密JWE,但是在使用密钥的base64时遇到了问题(按照外部API的指示)。

代码语言:javascript
复制
const crypto = require('crypto');
const jose = require('node-jose');

const secret = 'mySecret';
let hash = crypto.createHash('sha512');
let data = hash.update(secret, 'utf-8');
let token = getToken(); // Token is a correctly formatted JWE
const key = JSON.stringify({ key: data.digest('base64'), kty: 'oct', alg: 'HS512', use: 'enc' });

jose.JWK.asKey(key).
  then(function (result) {

    jose.JWE.createDecrypt(result.keystore).
      decrypt(token).
      then(function (result) {
        console.log(result);
      }).catch(err => {
        console.log(err);
      });
  });

这将返回以下错误:

Error: no key found

我是不是在密钥的初始化过程中做错了什么?任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2018-10-29 22:56:10

通过以下几点,我成功地让它工作起来:

代码语言:javascript
复制
const crypto = require('crypto');
const jwt = require('jsonwebtoken');
const jose = require('node-jose');

const secret = 'mySecret';
let token = getToken(); // Token is a correctly formatted JWE

let keystore = jose.JWK.createKeyStore();

// *****The crucial bit*****
const bufferderived = crypto.createHash('sha512')
      .update(secret)
      .digest()
      .slice(0, 512 / 8);

keystore.add({
  k: bufferderived, 
  kty: 'oct',
  alg: 'dir'
})
  .then(function (result) {
    console.log(result);

    jose.JWE.createDecrypt(keystore).
      decrypt(token).
      then(function (result) {
        const decryptedToken = result.plaintext.toString('utf8');
        const decoded = jwt.decode(decryptedToken);
      }).catch(err => {
        console.log(err);
      })
  });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53043425

复制
相关文章

相似问题

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