【发布时间】:2019-12-15 16:10:40
【问题描述】:
我们正在尝试匹配 crypto 和 crypto-js 输出。 我们的要求是在浏览器中加密字符串,但加密不支持浏览器端加密。因此,我们正在尝试使用 crypto-js 匹配输出。每次 crypto-js 产生不同的输出。
const crypto = require('crypto');
const CryptoJS = require('crypto-js');
const payload = {
name: 'John Doe'
}
// Node Package
function encryptNode(text) {
const cipher = crypto.createCipher('aes-256-cbc', 'devOps');
return cipher.update(Buffer.from(JSON.stringify(text)), 'utf8', 'hex') + cipher.final('hex');
}
console.log(encryptNode(payload));
// Browser Package
function encryptBrowser(text) {
const ciphertext = CryptoJS.AES.encrypt(JSON.stringify(text), 'devOps', { mode: CryptoJS.mode.CBC });
return ciphertext.toString(CryptoJS.format.Hex);
}
console.log(encryptBrowser(payload));
输出:
加密(预期):dfe03c7e825e9943aa6ec61deb4a8a73fdba0016a13c59c628ce025f39d44c7c
crypto-js: 4e5453abe7bd53d67d88aa4f040356c649fe0101366d05ce4c7d625cfd052cdc
【问题讨论】:
-
您为 Node 和 Browser 使用两个不同的库有什么特别的原因吗?你可以同时使用github.com/brix/crypto-js 吗?它会给出恒定的结果。
标签: javascript node.js encryption cryptography cryptojs