English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
PHP String строковые функции руководства
Функция crypt() используется для возвращения односторонней хеш-суммы строки
string crypt ( string $str [, string $salt ] )
crypt() возвращает строку хэша на основе стандартного алгоритма UNIX DES или другого доступного代替ющего алгоритма на системе.
Параметр соли является опциональным. Однако, если соли нет, crypt() создает слабый пароль. В версиях php 5.6 и выше без нее будет выброшена ошибка уровня E_NOTICE. Для улучшения безопасности убедитесь, что указана соли достаточной强度的.
password_hash() использует сильный алгоритм хэширования для генерации сильной соли и автоматически выполняет подходящее количество итераций. password_hash() является простым оберткой crypt() и полностью совместим с существующими хэшами паролей. Рекомендуется использовать password_hash().
Некоторые системы поддерживают не только один тип хэша. На самом деле, иногда алгоритм на основе MD5 используется вместо алгоритма на основе стандартного DES. Этот тип хэша активируется параметром соли. До версии 5.3 PHP определял доступные алгоритмы в зависимости от crypt() системы при установке. Если соли не предоставлено, PHP автоматически генерирует солю длиной 2 символа (DES) или 12 символов (MD5), в зависимости от доступности MD5 crypt(). PHP устанавливает константу CRYPT_SALT_LENGTH, которая указывает на максимальную длину соли, которую можно использовать для доступных хэшей.
crypt() на основе стандартного алгоритма DES возвращает два символа соли в начале вывода. Он также использует только первые 8 символов строки str, поэтому более длинные строки, начинающиеся с тех же 8 символов, также будут генерировать одинаковый результат (при использовании одинаковой соли).
На системах, поддерживающих мультихэширование функции crypt(), следующие константы устанавливаются в 0 или 1 в зависимости от того, доступен ли соответствующий тип:
CRYPT_STD_DES - Хэш на основе стандартного алгоритма DES, использующий два символа из набора "./0-9A-Za-z" в качестве соли. Использование недопустимых символов в строке соли приведет к сбою crypt().
CRYPT_EXT_DES - Расширенный хэш на основе алгоритма DES. Строка соли составляет 9 символов и состоит из одного подчеркивания, за которым следуют 4 байта повторений и 4 байта соли. Они кодируются в печатные символы, каждый символ содержит 6 бит, и предпочтение отдается символам с минимальным количеством эффективных бит. Символы от 0 до 63 кодируются как "./0-9A-Za-z". Использование недопустимых символов в строке соли приведет к сбою crypt().
CRYPT_MD5 - MD5 хэш использует строку соли длиной 12 символов, начинающуюся с $1$.
CRYPT_BLOWFISH - Алгоритм Blowfish использует такую соль: "$2a$", двухразрядный параметр cost, "$" и 64-битную строку, состоящую из символов, выбранных из диапазона "./0-9A-Za-z". Использование символов за пределами этого диапазона приведет к тому, что crypt() вернет пустую строку. Двухразрядный параметр cost - это логарифм次数 циклов, основанный на 2, его диапазон составляет от 04 до 31. Значения за пределами этого диапазона приведут к сбою crypt(). До PHP 5.3.7 поддерживалась только соль с префиксом "$2a$", а с PHP 5.3.7 началось внедрение новых префиксов для исправления безопасности, связанной с реализацией Blowfish. Дополнительную информацию можно найти в » этом документе. В общем, разработчики, если они разрабатывают только для версий PHP 5.3.7 и выше, должны использовать "$2y$", а не "$2a$"
CRYPT_SHA256 - Алгоритм SHA-256 использует 16-символьную строку соли, начинающуюся с $5$. Если строка соли начинается с "rounds=<N>$", числовое значение N используется для указания次数 выполнения хеширования, что очень похоже на параметр cost алгоритма Blowfish. По умолчанию количество циклов составляет 5000, минимально 1000, максимально 999,999,999. значения N за пределами этого диапазона будут преобразованы в ближайшее значение.
CRYPT_SHA512 - Алгоритм SHA-512 использует 16-символьную строку соли, начинающуюся с $6$. Если строка соли начинается с "rounds=<N>$", числовое значение N используется для указания次数 выполнения хеширования, что очень похоже на параметр cost алгоритма Blowfish. По умолчанию количество циклов составляет 5000, минимально 1000, максимально 999,999,999. значения N за пределами этого диапазона будут преобразованы в ближайшее значение.
Она возвращает хеш-строку
Номер | Параметры и описание |
---|---|
1 | str Строка для хеширования |
Попробуйте следующий пример, функция crypt() получает хеш-значение, используя автоматическую соль:
<?php // Установка пароля $input = 'information'; // Получение хеш-значения, использование автоматического соли $hash = crypt($input); ?>Проверим, посмотри‹/›