gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:57:09 26 4
gpt4 key购买 nike

这是我的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com