Шифрование с CryptoJS на Decypt с openssl_decrypt на PHP 7 возвращает всегда false
Мне нужно в моем переднем (ионном) зашифровать UUID, чтобы отправить его бэкэнду.
Я использую CryptoJS, это мой код для шифрования UUID.
const UUID = 'ABCD1234';
const privateKey = 'f38d09938ead31a57eca34d2a0df1c44';
const salt = CryptoJS.lib.WordArray.random(16);
const iv = CryptoJS.lib.WordArray.random(16);
const key = CryptoJS.PBKDF2(privateKey, salt, {
hasher: CryptoJS.algo.SHA512,
keySize: 4,
iterations: 1
});
const encripted = CryptoJS.AES.encrypt(UUID, key, {
iv
});
const cp = {};
cp.mid = CryptoJS.enc.Base64.stringify(encripted.ciphertext);
cp.iv = CryptoJS.enc.Hex.stringify(iv);
cp.s = CryptoJS.enc.Hex.stringify(salt);
Поэтому я отправляю CP в заголовках на сервер (Slim Framework 3).
Я получаю так:
$mid = $request->getHeader('HEADER-MID')[0];
$iv = $request->getHeader('HEADER-IV')[0];
$salt = $request->getHeader('HEADER-S')[0];
//Example Data Received
//mid: losv78Amn1zpgRe5/4hYFA==
//iv: 2d198339d178c053c37e36b7d03e8a3b
//salt: fb07dd1f61d72148bc1423af8cd1f295
$ct = base64_decode($mid);
$salt = hex2bin($salt);
$iv = hex2bin($iv);
$key = hash_pbkdf2("sha512", $privateKey, $salt, 1, 32);
$decrypted = openssl_decrypt($ct, 'AES-256-CBC', hex2bin($key), OPENSSL_RAW_DATA, $iv);
Ключ генерируется правильно сзади и спереди.
Но функция openssl_decrypt возвращает false и с openssl_error_string() получает это:
error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length
Я не знаю, что я делаю не так.
Заранее спасибо.