Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.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
如何在php中解密节点AES加密?_Php_Node.js_Encryption_Aes_Crypt - Fatal编程技术网

如何在php中解密节点AES加密?

如何在php中解密节点AES加密?,php,node.js,encryption,aes,crypt,Php,Node.js,Encryption,Aes,Crypt,我在node.js中编写了代码: var encodeKey = crypto.createHash('sha256').update(pass, 'utf-8').digest(); var cipher = crypto.createDecipheriv('aes-256-cbc', encodeKey, iv); console.log(cipher.update(text, 'hex', 'utf8') + cipher.final('utf8')); 我有text,pass和iv变量

我在node.js中编写了代码:

var encodeKey = crypto.createHash('sha256').update(pass, 'utf-8').digest();
var cipher = crypto.createDecipheriv('aes-256-cbc', encodeKey, iv);
console.log(cipher.update(text, 'hex', 'utf8') + cipher.final('utf8'));
我有
text
pass
iv
变量。当我尝试将这段代码翻译成PHP时,我得到了不同的结果。这是PHP代码:

$encodeKey = hash('sha256', $pass);
$decrypted = openssl_decrypt($text, 'aes-256-cbc', $encodeKey, 0, $iv);
臭虫在哪里?谢谢你的建议

你的JS代码

var encodeKey = crypto.createHash('sha256').update(pass, 'utf-8').digest();
…还有你的PHP代码

$encodeKey = hash('sha256', $pass);
它们不一样。它们产生不同的密钥,这将导致不同的加密

请尝试以下方法:

$encodeKey = hash('sha256', $pass, true);
然而,这只是问题的一部分

  • AES-CBC是
  • IVs应根据每条消息随机生成,而不是保持不变。(您的代码不清楚这是否是静态的。)
建议:切换到(JS)和(PHP)


如果您将PHP升级到7.2或更高版本,您应该可以免费获得libnaid。否则,将执行此操作。

您的编码键相同吗?是的,所有变量都相同