Вот подходящий для меня способ
https://3v4l.org/rRnD8
Из тестов на разных PHP/hhvm видно что base64 у каждой версии разный в виду особенности наверное mcrypt
Может кто знает еще способ передать закодированную строку в base64 + раскодировать по ключу
UPD
Спасибо всем :)
UPD2 на всякий пожарный чтобы не потерять<?php
$key = 'password to (en/de)crypt';
$string = ' {login:"user_test", password:"12311231!"} '; // note the spaces
$iv = mcrypt_create_iv(
mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC),
MCRYPT_DEV_URANDOM
);
var_dump($iv);
$encrypted = base64_encode(
$iv .
mcrypt_encrypt(
MCRYPT_RIJNDAEL_128,
hash('sha256', $key, true),
$string,
MCRYPT_MODE_CBC,
$iv
)
);
$key = 'password to (en/de)crypt';
$string = ' {login:"user_test", password:"12311231!"} '; // note the spaces
//$encrypted = "t0izCc6wCMaoOFbTnjrUCaVzXtqzv0O2812Yv9DT7p19llSuu4eFV6ha4ukvFeYCYr31LAVHYo5BaUzuCBNkcA==";
$data = base64_decode($encrypted);
$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
$decrypted = rtrim(
mcrypt_decrypt(
MCRYPT_RIJNDAEL_128,
hash('sha256', $key, true),
substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)),
MCRYPT_MODE_CBC,
$iv
),
"\0"
);
echo 'Encrypted:' . "\n";
var_dump($encrypted);
echo "\n";
echo 'Decrypted:' . "\n";
var_dump($decrypted);
Все оказалось как и должно было работать.
Вопрос только остался только для себя почему когда я тестил я упоролся*? хе.