Шифрование данных
Шифрованием называется процесс преобразования данных в формат, в котором они могут быть прочитаны только предполагаемым получателем сообщения. Получатель расшифровывает данные при помощи ключа или секретного пароля. РНР поддерживает несколько алгоритмов шифрования. Шифрование данных в Web имеет смысл только в том случае, если сценарии, в которых используются средства шифрования, работают на защищенном сервере. Поскольку РНР является сценарным языком, работающим на стороне сервера, перед шифрованием данные должны быть отправлены на сервер в простом текстовом формате. Если данные передаются через незащищенное соединение, существует немало способов перехвата этой информации в процессе ее пересылки от пользователя на сервер (http://www.apache-ssl.org).
Приведем некоторые функции.
string md5(string строка) – хэширующий алгоритм MD5 используется для создания цифровых подписей, позволяющих однозначно идентифицировать отправителя. MD5 является алгоритмом «одностороннего» хэширования; это означает, что данные, хэшируемые функцией md5(), восстановить уже невозможно. Алгоритм MD5 также применяется при проверке паролей. Поскольку теоретически невозможно восстановить исходную строку, обработанную алгоритмом MD5, можно хэшировать пароль функцией md5( ) и затем сравнивать зашифрованный пароль с результатом обработки пароля, введенного пользователем при попытке получения доступа к конфиденциальной информации.
Допустим, имеется некоторый секретный пароль toystore с хэш-кодом 745e2abd7c52eeldd7cl4aeOd71b9d76. Хэшированное значение сохраняется на сервере и сравнивается с хэш-эквивалентом пароля, введенного пользователем. Даже если злоумышленник получит доступ к зашифрованному паролю, это ни на что не повлияет, поскольку он не сможет восстановить по нему оригинал.
Пример хэширования строки.
$val = "secret";
$hash_val = md5 ($val);
// $hash_val = "Clab6fb9182fl6eed935bal9aa830788";
string cкypt(string строке [, детерминант]) - одностороннее шифрования данных: данные могут только шифроваться. Первый параметр определяет строку, шифруемую функцией. Необязательный второй параметр определяет алгоритм, используемый при шифровании. Точнее, тип алгоритма определяется длиной детерминанта. Различные типы алгоритмов и длины (в скобках) их детерминантов: CRYPT_STD_DES (2), CRYPT_EXT_OES (2), CRYPT_MD5 (12), CRYPT BLOWFISH (12).
Пример применение функции crypt (STD_DES) для хранения и сравнения паролей
$user_pass = "123456";
// Выделить первые два символа $user_pass и использовать их в качестве детерминанта.
$salt = substr($user_pass. 0, 2);
$crypt1 = crypt($user_pass, ;salt); // Зашифровать и сохранить пароль.
// $crypt1 = "12tir.zIbWQ3c"
//... пользователь вводит пароль
$entered_pass = "123456";
$salt1 = substr($crypt, 0, 2); // Получить первые два символа хранящегося пароля
// Зашифровать $entered_pass, используя $saltl в качестве детерминанта.
$crypt2 = crypt($entered_pass, $salt1);
// $crypt2 = "12tir.zIbWQ3c" Следовательно. $cryptl = $crypt2
Функция md5()обеспечивает лучшую защиту.
Функция mhash( ) поддерживает несколько алгоритмов хэширования, которые позволяют разработчикам использовать контрольные суммы и разнообразные цифровые подписи в приложениях РНР. Хэши также используются для хранения паролей (http://mhash.sourceforge.net).
Mcrypt - популярный пакет шифрования данных в РНР, обеспечивающий возможность двустороннего шифрования (то есть собственно шифрование и расшифровку данных). Имеется четыре режима шифрования СВС, СFВ, ЕСВ, OFB.
Дата добавления: 2015-04-15; просмотров: 769;