首页 > 解决方案 > 如何在 javascript 中使用 node-js 加密?

问题描述

我需要以下加密解密,但在客户端的 java 脚本中。此代码是用 Node-JS 编写的并使用加密库,我找不到用于客户端运行的 java 脚本的相同解决方案。

const crypto = require('crypto');

const decrypt = (textBase64, keyBase64, ivBase64) => {
    const algorithm = 'aes-256-cbc';
    const ivBuffer = Buffer.from(ivBase64, 'base64');
    const keyBuffer = Buffer.from(keyBase64, 'base64');

    const decipher = crypto.createDecipheriv(algorithm, keyBuffer, ivBuffer);
    decipher.setAutoPadding(false);

    let decrypted = decipher.update(textBase64, 'base64', 'utf8');
    decrypted += decipher.final('utf8');
    return decrypted;
}

const encryptedMessage = '';


const key = 'cGFzc3dvcmQxMjM0NTY3ODk=';

const iv = Buffer.from(encryptedMessage, 'base64').slice(0, 16);

// the message comes from the bytes AFTER the IV - this is what you should decrypt
const message = Buffer.from(encryptedMessage, 'base64').slice(16);

const result = decrypt(message, key, iv);
console.log(result);
//console.log(Buffer.from(encryptedMessage, 'base64').slice(0, 16))

标签: javascriptnode.jsencryptionaes

解决方案


首先我会说不建议在客户端解密,因为密钥是可见的。但你知道你在做什么。

这个库是纯 JS,应该可以在浏览器中正常工作:ricmoo/aes-js


推荐阅读