如何在php中解密节点AES加密?
我在node.js中编写了代码:如何在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变量
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应根据每条消息随机生成,而不是保持不变。(您的代码不清楚这是否是静态的。)
如果您将PHP升级到7.2或更高版本,您应该可以免费获得libnaid。否则,将执行此操作。您的编码键相同吗?是的,所有变量都相同