Учебник по PHP

PHP ГЛАВНАЯ Введение в PHP Установка PHP Синтаксис PHP Комментарии PHP PHP-переменные PHP-эхо/печать Типы данных PHP PHP-строки PHP-номера PHP-математика PHP-константы PHP-операторы PHP Если... Иначе... Иначе PHP-переключатель PHP-циклы PHP-функции PHP-массивы PHP-суперглобальные переменные PHP регулярное выражение

PHP- формы

Обработка форм PHP Проверка формы PHP Требуется PHP-форма URL-адрес формы PHP/электронная почта PHP-форма завершена

PHP продвинутый

Дата и время PHP PHP включает Обработка файлов PHP Открытие/чтение файла PHP Создание/запись файла PHP Загрузка файла PHP PHP-куки PHP-сессии PHP-фильтры Расширенные фильтры PHP Функции обратного вызова PHP PHP JSON Исключения PHP

PHP ООП

PHP Что такое ООП PHP-классы/объекты PHP-конструктор PHP-деструктор Модификаторы доступа PHP Наследование PHP PHP-константы Абстрактные классы PHP PHP-интерфейсы Особенности PHP Статические методы PHP Статические свойства PHP Пространства имен PHP Итерации PHP

База данных MySQL

База данных MySQL Подключиться к MySQL MySQL Создать БД MySQL Создать таблицу Вставка данных MySQL MySQL Получить последний идентификатор MySQL Вставить несколько MySQL подготовлен Выбор данных MySQL MySQL Где Порядок MySQL MySQL Удалить данные Данные обновления MySQL Предельные данные MySQL

PHP XML

XML-парсеры PHP Парсер PHP SimpleXML PHP SimpleXML — Получить PHP XML Expat PHP XML DOM

PHP — АЯКС

Введение в АЯКС АЯКС PHP База данных AJAX АЯКС XML AJAX-поиск в реальном времени АЯКС-опрос

Примеры PHP

Примеры PHP PHP-компилятор PHP-викторина PHP-упражнения PHP-сертификат

Справочник по PHP

Обзор PHP PHP-массив Календарь PHP Дата PHP PHP-каталог Ошибка PHP PHP-исключение Файловая система PHP PHP-фильтр PHP FTP PHP JSON Ключевые слова PHP PHP-библиотека XML PHP-почта PHP-математика PHP Разное PHP MySQLi PHP-сеть Управление выводом PHP PHP регулярное выражение PHP SimpleXML PHP-поток PHP-строка
addcslashes () добавляетслэш() bin2hex() нарезать() чр() chunk_split() convert_cyr_string() convert_uudecode() convert_uuencode() количество_символов() crc32() крипта() эхо() взорваться() fprint() get_html_translation_table() иврит () иврит () hex2bin() html_entity_decode() htmlсущности() htmlspecialchars_decode() htmlспециальныесимволы() взорваться () присоединиться() lcfirst() Левенштейн() локальная конв() лтрим () md5() md5_file() метафон() money_format() nl_langinfo () nl2br() число_формат() слова() parse_str() Распечатать() printf() quoted_printable_decode() quoted_printable_encode() цитата() rtrim() установить локаль() Ша1() sha1_file() подобный_текст() звук() спринтф() sscanf() str_getcsv () str_ireplace () str_pad() str_repeat() str_replace() str_rot13 () str_shuffle() str_split () str_word_count() strcasecmp() стрхр() стркмп() стрколл() strcspn() strip_tags() полосы косой черты () полоски () комиксы () полоска () стрлен() strnatcasecmp() strnatcmp() strncasecmp() стрнкмп() стрпбрк () стрпос() стррчр() стррев () стрипос() стррпос() стрспн () улстр() стрток() strtolower() strtoupper() стртр() substr() substr_compare() substr_count() substr_replace() подрезать() ucfirst() ucwords() vfprintf() vprintf() вспринтф() перенос слова()
Обработка переменных PHP XML-парсер PHP PHP-архив Часовые пояса PHP

PHP - функция crypt()


❮ Справочник по строкам PHP

Определение и использование

Функция crypt() возвращает хешированную строку с использованием алгоритмов DES, Blowfish или MD5.

Эта функция ведет себя по-разному в разных операционных системах. PHP проверяет, какие алгоритмы доступны и какие алгоритмы использовать, когда он установлен.

Параметр соли является необязательным. Однако crypt() создает слабый пароль без соли. Обязательно укажите достаточно сильную соль для большей безопасности.

Есть некоторые константы, которые используются вместе с функцией crypt(). Значение этих констант устанавливается PHP при его установке.

Константы:

  • [CRYPT_STD_DES] — Стандартный хеш на основе DES с солью из двух символов из алфавита «./0-9A-Za-z». Использование недопустимых символов в соли приведет к сбою этой функции.
  • [CRYPT_EXT_DES] — расширенный хэш на основе DES с девятисимвольной солью, состоящей из подчеркивания, за которым следуют 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() использует односторонний алгоритм.


Синтаксис

crypt(str,salt)

Значения параметров

Parameter Description
str Required. Specifies the string to be hashed
salt Optional. A salt string to base the hashing on


Технические детали

Возвращаемое значение: Возвращает закодированную строку или строку короче 13 символов, которая гарантированно отличается от соли в случае ошибки.
Версия PHP: 4+
Список изменений: PHP 5.6.0 — показывает предупреждение безопасности E_NOTICE, если соль не указана .
PHP 5.3.7 - Добавлены режимы $2x$ и $2y$ Blowfish.
PHP 5.3.2 — добавлены SHA-256 и SHA-512. Исправлено поведение Blowfish при недопустимых раундах, возвращающее строку «сбой» («*0» или «*1») вместо возврата к DES.
PHP 5.3.0 - PHP теперь содержит собственную реализацию алгоритмов шифрования MD5, стандартного DES, расширенного DES и Blowfish и будет использовать ее, если система не поддерживает один или несколько алгоритмов.

Дополнительные примеры

Пример

В этом примере мы протестируем разные алгоритмы:

<?php
// 2 character salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('something','st')."\n<br>";
}
else
{
echo "Standard DES not supported.\n<br>";
}

// 4 character salt
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES: ".crypt('something','_S4..some')."\n<br>";
}
else
{
echo "Extended DES not supported.\n<br>";
}

// 12 character salt starting with $1$
if (CRYPT_MD5 == 1)
{
echo "MD5: ".crypt('something','$1$somethin$')."\n<br>";
}
else
{
echo "MD5 not supported.\n<br>";
}

// Salt starting with $2a$. The two digit cost parameter: 09. 22 characters
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>";
}
else
{
echo "Blowfish DES not supported.\n<br>";
}

// 16 character salt starting with $5$. The default number of rounds is 5000.
if (CRYPT_SHA256 == 1)
{
echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; }
else
{
echo "SHA-256 not supported.\n<br>";
}

// 16 character salt starting with $6$. The default number of rounds is 5000.
if (CRYPT_SHA512 == 1)
{
echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$');
}
else
{
echo "SHA-512 not supported.";
}
?>

Вывод приведенного выше кода может быть (в зависимости от операционной системы):

Standard DES: stqAdD7zlbByI
Extended DES: _S4..someQXidlBpTUu6
MD5: $1$somethin$4NZKrUlY6r7K7.rdEOZ0w.
Blowfish: $2a$09$anexamplestringforsaleLouKejcjRlExmf1671qw3Khl49R3dfu
SHA-256: $5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4PmoNKQUGWFXlVy9vu9
SHA-512: $6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU/
oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQpp1XKI6LLQ0.


❮ Справочник по строкам PHP