25.3. Шифрование строк
Как правило, чтобы передать важную информацию, прежде всего необходимо каким-либо способом ограничить ее от доступа посторонних лиц. Конечно, это весьма существенно при передаче очень важной информации, в случае же обычного сообщения не стоит налагать какие-либо ограничения, так как, попадая в чужие руки, эта информация не может нанести никакого вреда ни вам, ни вашим партнерам по бизнесу. Мыже рассказываем об информации, которая играет весьма важную роль в жизни лица, а может и организации, которая осуществляет передачу этой самой информации.
Существует большое множество путей, ограничивающих доступ к передаваемой информации. Это всевозможные кодировщики, блокировщики и разнообразные программы. Сразу возникает вопрос: как эти программы осуществляют процесс кодировки. Они делают это за счет своей разветвленной структуры функций, которые и позволяют создавать программы, производящие кодирование информации. РНР является довольно-таки новым языком программирования, но можно сказать, что в этом отношении он не уступает более известным и распространенным. Разработчики РНР постарались включить большое количество всевозможный функций, решающих самые сложные проблемы программирования.
Рассмотрим следующие функции:
• crypt() ,
• md5(),
• crc32().
Функция crypt() осуществляет стандартный процесс шифрования методом DES. Думаем, не стоит рассказывать более углубленно об этом методе, так как программисты, профессиональные пользователи операционной системы Unix, давно знакомы с ним. Если у вас возникают какие-либо проблемы с этим методом, просто обратитесь кдокументации по Unix, там более подробно рассказано о методе шифрования DES. Функция crypt() имеет следующий синтаксис:
string crypt (string str [, string salt])
Функция crypt() осуществляет шифрование строки, используя стандартный метод Unix DES. В качестве параметра str в функцию передается строка, которую необходимо зашифровать, а также дополнительная символьная строка (параметр salt). На основании указанной дополнительной строки и будет основываться шифрование. Если параметр salt отсутствует, то он будет установлен случайным образом.
Некоторые операционные системы способны поддерживать больше одного способа шифрования. Иногда метод шифрования DES заменяется основанными на MD5 алгоритмами. Как вы уже заметили, именно параметр salt указывает натип шифрования.
Во время установки РНР определяются возможности функции шифрования и то, будет ли поддерживать параметр salt другие методы шифрования. Если параметр
salt не установлен, то РНР автоматически генерирует стандартный двухсимвольный ключ DES, еслиже в системе по умолчанию установлен тип шифрования MD5, то будет сгенерирован М05-совместимыйключ.
РНР устанавливает константу CRYPT_SALT_LENGTH, которая сообщает, способен ли регулярный двухсимвольный параметр salt осуществлять шифрование на вашей операционной системе или же потребуется применение 12-символьного способа шифрования md5.
При использовании параметра salt необходимо помнить, что указанный тип шифрования будет генерироваться только один раз. Если вы произведете вызов этой функции рекурсивно, то может возникнуть защита функции, в результате чего вы не получите необходимый вам результат.
Стандартное шифрование DES crypt() содержит ключ в двух первых символах потока вывода. Нет других функций дешифрации, кроме crypt(), использующей однопроходный алгоритм.
На системах, где функция crypto поддерживает типы кодирования кратного числа, происходит установка значений приведенных ниже констант, равная 0 или 1 в зависимости от того, является ли данный тип доступным:
Приведем пример:
<?php
$stringstr = "Строка для шифрования";
crypt ($stringstr, CRYPT_MD5_MD5);
?>
Думаем, что какие-либо пояснения кданному примеру делать излишне.
Функция md5() вычисляет хэш типа шифрования md5 строки. Данный тип распространен при использовании функции crypt(). Функция md5() имеет следующий синтаксис:
Вместо параметра str задается хэш типа шифрования MD5. Другими словами, функция md5() вычисляет значение MD5 для строки, заданной вместо параметра str, используя алгоритм RSA Data Security, Inc. MD5 Message-Digest (более подробную информацию смотрите на сайте www.php.net).
Функции crypt() и md5() используются в ТОР 3 и РНР 4.
Функция crc32() возвращает полином строки. Ее синтаксис:
crc32() генерирует циклическую контрольную сумму статической неопределенности с длиной задаваемой строки 32 бита. Строка списывается в качестве параметра функции str. Это, как правило, используется для того, чтобы подтвердить целостность передаваемых данных.
Функция сгс32() работает в PHP 4.0.1 и выше.