string gzencode(string data, integer level, integer mode)
Функция gzencode сжимает данные с помощью библиотеки gzip. Необязательный аргумент level задает уровень сжатия от 0 до 9, причем 9 - высшая степень сжатия. Третий аргумент задает метод сжатия.
Листинг 12.62. Функции gzdeflate, gzinflate
<?php
$text = "Core PHP Programming"; $gzText = gzdeflate($text, 9); print(bin2hex($gzText) . "<br>");
//отбросить первые 10 байтов (заголовок) и последние 4 байта (контрольная сумма)
print(gzinflate($gzText) . "<br>");
?>
Метод FORCE_GZIP используется для задания режима gzip, который устанавливается по умолчанию, метод FORCE_DEFLATE - для задания режима zlib. Возвращаемое значение включает в себя заголовок gzip и контрольную сумму в конце. Если необходимо развернуть данные с помощью функции gzinflate, следует их отбросить (листинг 12.63).
| Листинг 12.63. Функция gzencode_
<?php
$text = "Core PHP Programming"; $gzText = gzencode($text, 9); print(bin2hex($gzText) . "<br>");
//отбросить первые 10 байтов ( заголовок) и последние 4 байта ( контрольная сумма)
print(gzinflate(substr($gzText, 10, -4)) . "<br>");
?>
string gzinflate(string data, integer length)
Функция gzinflate предназначена для разворачивания данных, сжатых с помощью алгоритма deflate. Необязательный аргумент length устанавливает максимальный размер для разворачиваемых данных.
string gzuncompress(string data, integer length)
Функция gzuncompress предназначена для разворачивания данных, сжатых функцией gzcompress. Необязательный аргумент length устанавливает максимальный размер для разворачиваемых данных.
12.5. Кодирование
Кодировка - это процесс преобразования информации в нечитаемый формат и из нечитаемого формата. Некоторые алгоритмы просто скремблируют текст, другие предусматривают последующее декодирование. PHP имеет возможность работать с C-функцией crypt и расширением, работающим с библиотекой mcrypt.
Функции mcrypt опираются на одноименную библиотеку, написанную Никосом Мавроянопулосом (Nikos Mavroyanopoulos). Он предложил усовершенствованную систему кодирования данных. С этим проектом можно ознакомиться по адресу <http://mcrypt.hellug.gr/>. Саша Шуман добавил возможности использования в PHP библиотеки mycrypt. Дерик Ретанс (Derick Rethans) добавил возможность поддержки нового API-интерфейса, имеющегося в mcrypt 2.4.4.
Тема криптографии выходит за рамки настоящей книги. Некоторые концепции, описанные в этом разделе, требуют знакомства с последними разработками в теории криптографии. Лучше всего начинать изучение криптографии с FAQ-файла группы новостей sci.crypt сети Usenet (<http://www.faqs.org/faqs/cryptography-faq/>). Еще одним источником может стать книга Вильяма Сталлингза (William Stallings) Cryptography and Network Security: Principles and Practice, опубликованная в издательстве Prentice Hall.
string crypt(string text, string salt)
Функция crypt (листинг 12.64) шифрует строку, используя C-функцию crypt, которая обычно применяет стандартное DES-шифрование, но это зависит от конкретной операционной системы. Аргумент text возвращается в зашифрованном виде. Аргумент salt является необязательным. PHP создает случайное значение для этого аргумента, если он не был задан явным образом. Более полная информация о функции crypt приводится на соответствующей man-странице. Заметим, что данные, зашифрованные с помощью функции crypt, расшифровать невозможно. Эта функция обычно используется для шифрования сохраняемых паролей, когда необходима авторизация. При этом процедура аутентификации заключается в следующем: запрашивается пароль, затем он шифруется и в зашифрованном виде сравнивается с паролем, зашифрованным ранее.
В зависимости от операционной системы алгоритм DES может иметь альтернативу. Аргумент salt предназначен для определения используемого алгоритма. Двухсимвольное значение аргумента salt используется для стандартного шифрования DES. Девятисимвольное значение аргумента salt задает расширенный алгоритм шифрования DES. Двенадцатисимвольное значение аргумента salt определяет шифрование MD5. И шестнадцатисимвольное значение аргумента salt задает алгоритм "блоуфиш".
Все имеющиеся алгоритмы шифрования задаются при компиляции PHP. Следующие константы определяют возможность применения четырех алгоритмов: CRYPT_STD_DES, CRYPT_EXT_DES, CRYPT_MD5, CRYPT_BLOWFISH. Для этого им задаются значения TRUE или FALSE.
j Листинг 12.64. Функция crypt_
<?php
$password = "secret";
if(CRYPT_MD5) {
$salt = "leonatkinson";
print("Using MD5: ");
}
else
{
$salt = "cp";
print("Using Standard DES: ");
}
print(crypt($password, $salt));
string mcrypt_create_iv(integer size, integer source)
Функция mcrypt_create_iv предназначена для создания вектора инициализации. Аргументом size задается значение, соответствующее алгоритму шифрования, которое устанавливается с помощью функции mcrypt_get_block_size. Аргументу source может задаваться одна из трех следующих констант: MCRYPT_DEV_RANDOM использует случайные числа из файла /dev/random; MCRYPT_DEV_URANDOM использует случайные числа из файла /dev/urandom; MCRYPT_RAND использует случайные числа, полученные с помощью функции rand.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Кодирование и декодирование. Часть Триннадцатая.
19-01-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Кодирование и декодирование. Часть Двеннадцатая. | PHP. Кодирование и декодирование. Часть Четырнадцатая. |