Я пытаюсь защитить информацию в своей базе данных, и стандартным типом данных является JSON, и я просто написал несколько простых mcrypt
функций, которые шифруют и дешифруют любой текст, вот они:
function encrypt($key, $data){
$encrypted_data = mcrypt_cbc(MCRYPT_RIJNDAEL_192, $key, $data, MCRYPT_ENCRYPT);
return base64_encode($encrypted_data);
}
function decrypt($key, $encryptedData){
$decrypt = mcrypt_cbc(MCRYPT_RIJNDAEL_192, $key, base64_decode($encryptedData), MCRYPT_DECRYPT);
return $decrypt;
}
У меня есть допустимая строка JSON, и я протестировал json_decode
без прохождения шифрования, и это работает.Но когда я шифрую, затем дешифрую , затем пытаюсь json_decode
, он возвращает только NULL
.
Сейчас я просто отлаживаю его простым скриптом, вот он:
include("coreFunctions.php");
$arr = '{"number":"4646464646","type":"home"}';
$key = "ladida";
$locked = encrypt($key, $arr);
var_dump($locked);
var_dump(json_decode(decrypt($key, $locked), true));
Я проверил , что вывод decrypt
является ЖЕ в том виде, в каком он был.
Может кто-нибудь сказать мне, почему этопроисходит?
ОБНОВЛЕНИЕ
Я обнаружил, что strlen()
до и после отличается.Итак, как я могу убедиться, что он остается неизменным на протяжении всего процесса шифрования, или исправить его после того, как это будет сделано?