Шифрование с 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

Я не знаю, что я делаю не так.

Заранее спасибо.

0 ответов

Другие вопросы по тегам