我使用openssl_encrypt()
作为算法,使用aes-256-cbc
在PHP中创建了一个加密函数。我希望在API
调用中发送时,在NodeJS中对加密的数据进行解密。
这是我的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)
在NodeJS的decrypt
函数中正确的方法应该是什么?