在PHP 7encryption解密在节点JS

在PHP5.6中,有很多解决scheme可以完美运行,这些解决scheme基于http://php.net/manual/en/function.mcrypt-decrypt.php

例如

public function encrypt($data) { //don't use default php padding which is '\0' $pad = $this->blocksize - (strlen($data) % $this->blocksize); $data = $data . str_repeat(chr($pad), $pad); return bin2hex(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $this->encryptKey, $data, MCRYPT_MODE_CBC, $this->iv)); } 

但是PHP7有一个警告 ,不鼓励使用这个function。

“这个函数从PHP 7.1.0开始已经被DEPRECATED了,依靠这个函数是非常不鼓励的。

任何使用两端关键字进行安全encryption的想法; PHP + Node.js?

LibMcrypt在2007年被放弃了。更多信息https://wiki.php.net/rfc/mcrypt-viking-funeral

你必须使用opensslencryptionhttp://php.net/manual/en/function.openssl-encrypt.php

PHP

 <?php $textToEncrypt = "Secret Text to Encrypt"; $encryptionMethod = 'aes-256-cbc'; $secretHash = "315a5504d921f8327f73a356d2bbcbf1"; // <---- you have to use some persistent key. $iv_size = openssl_cipher_iv_length($encryptionMethod); $iv = openssl_random_pseudo_bytes($iv_size); //To encrypt $encryptedMessage = openssl_encrypt($textToEncrypt, $encryptionMethod, $secretHash, 0, $iv); //Concatenate iv with data $encryptedMessageWithIv = bin2hex($iv) . $encryptedMessage; //To Decrypt $iv_size = openssl_cipher_iv_length($encryptionMethod); $iv = hex2bin(substr($encryptedMessageWithIv, 0, $iv_size * 2)); $decryptedMessage = openssl_decrypt(substr($encryptedMessageWithIv, $iv_size * 2), $encryptionMethod, $secretHash, 0, $iv); echo "Encrypted: $encryptedMessageWithIv <br>Decrypted: $decryptedMessage"; 

在这里尝试https://3v4l.org/r9pYv

Node.JS (我真的不是一个node.js程序员,可以有更高效的方式)

 var data = "ad699a2537ec2a7f699acbf97ca0080eh3z5EgvnTAvlc76YeR6HdWPmkDDt+pHiG//qo7xnqyQ="; var key = "315a5504d921f8327f73a356d2bbcbf1"; var iv = new Buffer(data.substring(0,32), 'hex'); var dec = crypto.createDecipheriv('aes-256-cbc',key,iv); var decrypted = Buffer.concat([dec.update(new Buffer(data.substring(32),'base64')), dec.final()]); console.log('DECRYPTED TEXT: '+decrypted.toString()); 

试试这里: https : //repl.it/FQyo/2