Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 节点JS CryptoJs中的Angular CryptoJs加密未解密_Angularjs_Node.js_Encryption_Cryptography_Cryptojs - Fatal编程技术网

Angularjs 节点JS CryptoJs中的Angular CryptoJs加密未解密

Angularjs 节点JS CryptoJs中的Angular CryptoJs加密未解密,angularjs,node.js,encryption,cryptography,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' }); $ht

这是我的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'
    });
$httpProvider.defaults.headers.common['key']=CryptoJS.AES.encrypt('''='){
模式:CryptoJS.mode.CBC,
填充:CryptoJS.pad.Pkcs7,
键大小:“256/32”
});
使用节点JS代码进行解密,算法为aes-256-cbc,密钥为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();
}});
app.all('*',函数(req,res,next){
var headers=JSON.parse(JSON.stringify(req.headers));
var decipher=crypto.createDecipher(算法,密钥);
解密。设置自动添加(true);
var dec=decipher.update(headers.key,'hex','utf8');
dec+=最终破译('utf8');
如果(十二月)
{
//做点什么
next();
}
其他的
{
//做点什么
next();
}});
我无法解密在angular中完成的加密。如果单独使用,它们都可以很好地工作。如果我在angular中对字符串本身进行解密,它对node也会起同样的作用。但是跨平台的它不起作用,任何人都不能提出我的方法有什么问题。任何帮助都将不胜感激。
我也尝试过从两边移除自动加密,而且缓冲区加密/解密不起作用提前感谢。

问题在于节点加密库使用随机salt进行编码和解码,而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);
}}
这两个键必须相同,在角度代码中

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