Иногда нам необходимо зашифровать данные с ключом так, чтобы другие пользователи не смогли его разгадать. К примеру, mcrypt_encrypt, не подходит для данной задачи, так как имеет недостатки безопасности и одним из самым эффективных и безопасных методов на сегодня является openssl шифрование.
Функции очень простые. Одна decrypt_ – дешефрует (разшифровывает) данные. Вторая crypt_ – шифрует данные. Принимают string. В дальнейшем Вы сможете сами дописать код, необходимый для приведения Вам требуемых типов данных (int, float).
Вот сами функции:
разшифровывает:
function decrypt_($data){
$method = "aes-256-cbc";
$pass = "78fdg21dfg1fdg1dfg1";
$iv = '9874-88-11447kx2';
$data = base64_decode(base64_decode($data));
return openssl_decrypt($data, $method, $pass, true, $iv);
}
зашифровывает:
function crypt_($data){
$method = "aes-256-cbc";
$pass = "78fdg21dfg1fdg1dfg1";
$iv = '9874-88-11447kx2';
$data = openssl_encrypt($data, $method, $pass, true, $iv);
return base64_encode(base64_encode($data));
}
Где
$method = "aes-256-cbc";//метод шифрования
$pass = "78fdg21dfg1fdg1dfg1";//пароль шифрования
$iv = '9874-88-11447kx2';//IV должен быть ТОЛЬКО определенной длины, иначе будет ошибка!
$data = openssl_encrypt($data, $method, $pass, true, $iv);//само шифрование
return base64_encode(base64_encode($data));//оборачиваем два раза в base64_ecode, чтобы не было кракозябр (нечитаемых символов)
Применять так:
шифруем:
echo crypt_('пам-парам');//QjZqemhjeFY4ZjhRaldoK2Y0cGpZeUhQbjdyMC9QaTV0SWw5REl4N1E1WT0=
дешифруем:
echo decrypt_('QjZqemhjeFY4ZjhRaldoK2Y0cGpZeUhQbjdyMC9QaTV0SWw5REl4N1E1WT0=');//пам-парам