angularjs - Node JS 中的 Angular CryptoJs 加密而不是解密 CryptoJS

标签 angularjs node.js encryption cryptography cryptojs

这是我的 Anguarjs 代码

 $httpProvider.defaults.headers.common['key'] = CryptoJS.AES.encrypt('<datatoencrypt>', '<key let says xyx>=', {
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7,
        keySize: '256 / 32'
    });

Node JS 代码解密使用,算法为 aes-256-cbc, key 与 Angular 相同。

app.all('*', function (req, res, next) {
var headers = JSON.parse(JSON.stringify(req.headers));
var decipher = crypto.createDecipher(algorithm, key);
decipher.setAutoPadding(true);
var dec = decipher.update(headers.key, 'hex', 'utf8');
dec += decipher.final('utf8');
if (dec != "<datatoencrypt>")
{
    //do something
    next();
}
else
{
    //do something
    next();
}});

我无法解密以 Angular 完成的加密。如果单独使用它们都可以很好地工作。如果我解密 Angular 本身的字符串,它的工作原理与 Node 相同。但是跨平台它不起作用任何人都可以建议我的方法有什么问题。任何帮助,将不胜感激。 我也尝试从两侧删除自动填充,缓冲区加密/解密也不起作用。 提前致谢。

最佳答案

问题是 Node 加密库使用随机盐进行编码和解码,而 augular cryptoJS 则不然。因此,如果您想在 Angular 中加密并在 Node 中解密,您需要使用 node-cryptojs-aes

var CryptoJS = require('node-cryptojs-aes').CryptoJS;
function decrypt(text) {
try {
    var decrypted = CryptoJS.AES.decrypt(text, key);
    return decrypted.toString(CryptoJS.enc.Utf8);
} catch (ex)
{
    console.log(ex);
}}

两者的 key 必须相同,在 Angular 代码中将像

var encry = CryptoJS.AES.encrypt('<texttoecrypt>', <key>');

关于angularjs - Node JS 中的 Angular CryptoJs 加密而不是解密 CryptoJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47466845/

相关文章:

javascript - TemplateURL 不起作用 - 请求未发送

node.js - 如何修复 ‘Error: Can' 找不到 Python 可执行文件 "python",您可以设置 PYTHON 环境变量。” ubuntu Node js npm

java - Spring属性解密

javascript - AngularJS orderBy - Chromium 浏览器中疯狂的 Array.prototype.sort 行为 - 无法清除排序

javascript - 为什么在触发 window.location.reload 时清除其余功能代码?

node.js - centos服务器无法运行node express

javascript - 如何在规范中使用 require - grunt + karma + node 中的 jasmine

生产服务器和本地服务器上的 codeigniter 加密

javascript - 如何在 Protractor 中选中多个复选框