1

我按照这个尝试了JWE加密和解密

使用 node-jose,我如何解密我刚刚加密的数据?

var ursa = require("ursa");

const {
    JWK
} = require('node-jose');
const keygen = require('generate-rsa-keypair');
const jose = require('./joseHelper');

const rawKeys = keygen();

const makeKey = pem => JWK.asKey(pem, 'pem');

async function start() {
    const publicKey = await makeKey(rawKeys.public);
    const privateKey = await makeKey(rawKeys.private);

    const raw = {
        iss: 'test',
        exp: new Date().getTime() + 3600,
        sub: {
            test: 'This is a test',
        },
    };

    const {
        encrypt,
        decrypt
    } = jose(publicKey, privateKey);

    return encrypt(raw).then(encrypted => {
        console.log(encrypted);
        decrypt(encrypted);
    });
}

return start().then((result) => {
    console.log('decrypted', result);
}, (err) => {
    console.error(err);
});

何塞帮手

const {
    JWE
} = require('node-jose');

const jose = (publicKey, privateKey) => {
    async function encrypt(raw) {
        if (!raw) throw new Error('Missing raw data.');
        const buffer = new Buffer(JSON.stringify(raw));
        return JWE.createEncrypt(publicKey).update(buffer).final();
    }

    async function decrypt(encrypted) {
        if (!encrypted) throw new Error('Missing encrypted data.');
        return JWE.createDecrypt(privateKey).decrypt(encrypted);
    }

    return {
        encrypt,
        decrypt
    }
}

module.exports = jose;

在运行这个程序时,我被解密为 null。有什么我想念的吗?

4

0 回答 0