Как расшифровать зашифрованные данные из PHP с помощью NodeJS Crypto Package - PullRequest
0 голосов
/ 30 октября 2018

Я создал функцию шифрования в PHP, используя openssl_encrypt() с aes-256-cbc в качестве алгоритма. Я хочу, чтобы зашифрованные данные были расшифрованы в NodeJS при отправке в вызове API.

Это шифрование в моем PHP:

$form_data_str = json_encode($form_data);

  // Encrypt data to submit
  define('AES_256_CBC', 'aes-256-cbc');
  // Encryption Key from Merchant sKey
  $sKey = 'uTEW2U0s90mtzF5nGX2BBKkuYcUsQEEK';
  $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length(AES_256_CBC));
  $encrypted_form_data = openssl_encrypt($form_data_str, AES_256_CBC, $encryption_key, 0, $iv);

затем я передаю зашифрованные данные как тело в вызове API на мой сервер NodeJS. Теперь я хочу расшифровать данные в моем NodeJS. У меня есть текущий код в моем NodeJS:

var encrypter = require('crypto'),
algorithm = 'aes-256-cbc',
password = 'uTEW2U0s90mtzF5nGX2BBKkuYcUsQEEK';

function decrypt(data){
    let iv = new Buffer.alloc(16);
    var decipher = encrypter.createDecipheriv(algorithm,password,iv)
    var decrypted = decipher.update(data,'hex','utf8')
    decrypted += decipher.final('utf8');
    return decrypted;
}

var decrypted = decrypt('encrypted data from request body');
console.log(decrypted)

В console У меня есть эта ошибка:

crypto.js:183


 var ret = this._handle.final();
                         ^

Error: error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length at Decipheriv.final (crypto.js:183:26)

Каким должен быть правильный подход в моей decrypt функции в NodeJS?

...