Функция crypt() возвращает строку, зашифрованную с использованием алгоритма DES, Blowfish или MD5.
Эта функция ведет себя по-разному в разных операционных системах, а некоторые операционные системы поддерживают более одного типа алгоритма. Во время установки PHP проверяет, какие алгоритмы доступны и какие алгоритмы используются.
Точный алгоритм зависит от формата и длины аргумента соли. Соль может сделать шифрование более безопасным, увеличивая количество строк, генерируемых из определенной строки с помощью определенного метода шифрования.
Вот некоторые константы, используемые с функцией crypt(). Эти постоянные значения устанавливаются PHP во время установки.
постоянный:
[CRYPT_SALT_LENGTH] — длина шифрования по умолчанию. Используйте стандартное шифрование DES длиной 2.
[CRYPT_STD_DES] — стандартное шифрование на основе DES с двухсимвольной солью из алфавита «./0-9A-Za-z». Использование недопустимых символов в соли приведет к сбою функции.
[CRYPT_EXT_DES] — расширенное шифрование на основе DES с 9-символьной солью, состоящей из знака подчеркивания, за которым следует 4-байтовый номер итерации и 4-байтовая соль. Они кодируются как печатные символы, 6 бит на символ, начиная с младшего символа. Значения от 0 до 63 кодируются как «./0-9A-Za-z». Использование недопустимых символов в соли приведет к сбою функции.
[CRYPT_MD5] — MD5-шифрование с 12-значной солью, начинающейся с $1$.
[CRYPT_BLOWFISH] — шифрование Blowfish имеет соль, начинающуюся с $2a$, $2x$ или $2y$, двузначный параметр стоимости «$» и 22 символа из алфавита «./0-9A-Za-z». в . Использование символов вне алфавита приведет к тому, что функция вернет строку нулевой длины. Параметр «$» представляет собой логарифм по основанию 2 числа итераций алгоритма хеширования Blowfish и должен находиться в диапазоне 04–31. Значения вне этого диапазона приведут к сбою функции.
[CRYPT_SHA_256] — шифрование SHA-256 имеет 16-символьную соль, начиная с $5$. Если строка соли начинается с «rounds=<N>$», числовое значение N используется для представления количества раз выполнения хэш-раунда, аналогично параметру стоимости в Blowfish. Количество циклов по умолчанию — 5000, минимальное значение — 1000, максимальное значение — 999 999 999. Любое значение N вне этого диапазона будет преобразовано в ближайшее граничное значение.
[CRYPT_SHA_512] — шифрование SHA-512 имеет 16-символьную соль, начиная с $6$. Если строка соли начинается с «rounds=<N>$», числовое значение N используется для представления количества раз выполнения хэш-раунда, аналогично параметру стоимости в Blowfish. Количество циклов по умолчанию — 5000, минимальное значение — 1000, максимальное значение — 999 999 999. Любое значение N вне этого диапазона будет преобразовано в ближайшее граничное значение.
В системах, где эта функция поддерживает несколько алгоритмов, вышеуказанным константам присваивается значение «1», если поддерживается, и «0» в противном случае.
Примечание. Соответствующей функции дешифрования нет. Функция crypt() использует односторонний алгоритм.
склеп( ул,соль )
параметр | описывать |
---|---|
ул. | Необходимый. Указывает строку, которую нужно закодировать. |
соль | Необязательный. Строка, используемая для увеличения количества кодируемых символов, чтобы сделать кодирование более безопасным. Если аргумент соли не указан, он будет генерироваться случайным образом при каждом вызове функции. |
Возвращаемое значение: | Возвращает зашифрованную строку или в случае ошибки строку длиной менее 13 символов, которая гарантированно отличается от соли. |
---|---|
PHP-версия: | 4+ |
Журнал обновлений: | В PHP 5.3.7 были добавлены режимы $2x$ и $2y$ Blowfish для борьбы с потенциальными атаками высокого уровня. В PHP 5.3.2 были добавлены новые константы SHA-256 и SHA-512. Начиная с PHP 5.3.2, Blowfish будет возвращать строку «сбой» («*0» или «*1») в недопустимых циклах вместо возврата к DES. Начиная с PHP 5.3.0, PHP поставляется с реализацией шифрования MD5, стандартной реализацией DES, расширенной реализацией DES и алгоритмом Blowfish. Если система не поддерживает вышеуказанный алгоритм, будет использоваться собственный алгоритм PHP. |
Используйте htpasswd для шифрования crypt():
<?php // Установить пароль $password = ' mypassword ' ; // Получаем хэш-значение, используем автоматическое значение соли $хеш = крипта ( $пароль ) ?> ;В этом примере мы используем разные типы хэшей:
<?php если ( CRYPT_STD_DES == 1 ) { эхо ' Стандартный DES : ' .crypt ( ' rasmuslerdorf ' , ' rl ' ) " n " } . если ( CRYPT_EXT_DES == 1 ) { эхо ' Расширенный DES: ' . crypt ( ' rasmuslerdorf ' , ' _J9..rasm ' ) " n " } . если ( CRYPT_MD5 == 1 ) { эхо ' MD5: ' . crypt ( ' rasmuslerdorf ' , ' $ 1 $rasmusle$ ' ) " n " } . если ( CRYPT_BLOWFISH == 1 ) { эхо ' Blowfish: ' crypt ( ' rasmuslerdorf ' , ' $ 2a $ 07$usesomesillystringforsalt$ ' ) " n " ; если ( CRYPT_SHA256 == 1 ) { эхо ' SHA-256: ' . crypt ( ' rasmuslerdorf ' , ' $5 $ rounds =5000$usesomesillystringforsalt$ ' ) " n " ; если ( CRYPT_SHA512 == 1 ) { эхо ' SHA-512: ' . crypt ( ' rasmuslerdorf ' , ' $6 $ rounds =5000$usesomesillystringforsalt$ ' ) " n " ; ?>Приведенный выше код выводит следующее (в зависимости от операционной системы):
Стандартный DES: rl.3StKT.4T8MEРасширенный DES: _J9..rasmBYk8r9AiWNcMD5: $1$rasmusle$rISCgZzpwk3UhDidwXvin0Blowfish: $2a$07$usesomesillystringfor2uDLvp1Ii2e./U9C8sBjqp8I90dH6hiSHA-256: $5$rounds=5000$usesomesillystri$KqJWpanXZHKq2BOB43TSaYhEWsQ1Lr5QNyPCDH/Tp.6SHA-512: $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21