Node.js 在Nodejs中加密/解密aes256cbc

Node.js 在Nodejs中加密/解密aes256cbc,node.js,encryption,Node.js,Encryption,我正在处理一个项目,需要在nodejs中开发一个加密/解密字符串 我以下一种格式接收字符串:pTS3JQzTxrSbd+cLESXHpg== 此字符串是从此页生成的: 并使用aes-256-cbc标准 我实现的代码如下所示: var CryptoJS = require("crypto-js"); var key = 'TEST_KEY'; var text = 'pTS3JQzTxrSbd+cLESXHpg=='; function decript(text, key)

我正在处理一个项目,需要在nodejs中开发一个加密/解密字符串

我以下一种格式接收字符串:pTS3JQzTxrSbd+cLESXHpg==

此字符串是从此页生成的:

并使用aes-256-cbc标准

我实现的代码如下所示:

var CryptoJS = require("crypto-js");

var key = 'TEST_KEY';
var text = 'pTS3JQzTxrSbd+cLESXHpg==';

function decript(text, key) {
    return CryptoJS.AES.decrypt(text.trim(), key);
}

console.log(decript(text, key).toString(CryptoJS.enc.Utf8));
但我总是得到一个空洞的回答

你能告诉我是什么问题吗

非常感谢

As and,CryptoJS.AES当给定一个作为字符串的“密钥”时,将其视为密码,并使用与
openssl enc兼容的基于密码的密钥派生。这与您链接的网站不同,也不兼容,虽然没有明确说明,但根据密码名称列表,几乎可以肯定的是,它在内部调用OpenSSL的“EVP”接口,这意味着如果您指定的密钥对于算法来说太短,就像您所做的那样,它使用内存中相邻的任何内容,这显然是零值字节(对于运行在比1980年更新的操作系统上的程序来说并不少见),它或者使用默认的零字节IV,或者类似地将其设置为零字节。对于CBC,它使用PKCS5/7填充,这与CryptoJS(以及大多数其他东西)兼容。因此:

const CryptoJS = require('crypto-js');
var key = CryptoJS.enc.Latin1.parse("TEST_KEY\0\0\0\0\0\0\0\0"+"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
var iv = CryptoJS.enc.Latin1.parse("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
var ctx = CryptoJS.enc.Base64.parse("pTS3JQzTxrSbd+cLESXHpg==")
var enc = CryptoJS.lib.CipherParams.create({ciphertext:ctx})
console.log( CryptoJS.AES.decrypt (enc,key,{iv:iv}) .toString(CryptoJS.enc.Utf8) )
->
Test text