Я создал функцию шифрования в 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?