Mcrypt

Если есть необходимость зашифровать информацию о кредитной карте, а затем расшифровать ее, то одним из простейших решений будет использование модуля Mcrypt, который доступен в виде РНР-расширения. Библиотека Mcrypt позволяет выполнить высокоуровневое шифрование. Mcrypt предоставляет на выбор более 30 шифров, которыми вы можете шифровать ваши данные. Для использования Mcrypt нужно перекомпилировать РНР с поддержкой Mcrypt.

Использование Mcrypt

Следующий сценарий показывает, как использовать Mcrypt для шифрования и дешифрования данных:

<?php
$data = "Stuff you want encrypted";
$key = "Secret passphrase used to encrypt your data"; $cipher = "MCRYPT_SERPENT_256"; $mode = "MCRYPT__M0DE_CBC";
function encrypt($data,  $key,  $cipher,  $mode)   { // Шифрование данных return  (string)
base64_encode
(
mcrypt_encrypt (
$cipher,
substr (md5 ($key) , 0,mcrypt_get_key_size ($cipher,  $mode) ) ,
$data,
$mode,
substr (md5 ($key), 0, mcrypt_get_block_size ($cipher,  $mode)) )
) ;
}
function decrypt($data,  $key,  $cipher, $mode)   {
// Дешифрование данных return  (string) mcrypt_decrypt (
$cipher,
substr(md5($key),0,mcrypt_get_key_size($cipher,  $mode)), base64_decode($data) , $mode,
substr(md5($key),O,mcrypt_get_block_size($cipher,  $mode)) ) ;
}
?>

Вызов функции mcrypt()

Функции mcrypt() нужно передать следующую информацию:

  • данные, которые нужно зашифровать;
  • парольную фразу, необходимую для шифрования и дешифрования данных (она называется ключом);
  • шифр, используемый для шифрования данных, и определяющий алгоритм шифрования.

Включение библиотеки mcrypt для php в Ubuntu

Данная библиотека может потребоваться, например, при использовании на сайте облачных технологий (как пример - для выполнения резервного копирования в облачный диск). До 13-й версии Ubuntu модуль был включен по умолчанию, после он выключен. Чтобы его включить, вводим команды:

  • установка модуля (если не установлен)
    sudo apt-get install php5-mcrypt
  • создание ссылок (чтобы не копировать)
    sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available
  • включение:
    sudo php5enmod mcrypt
  • перезапуск веб-сервера:
    sudo /etc/init.d/apache2 restart