<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.xpass.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'xpass.constants.php',
    1 => 'Предопределённые константы',
    2 => 'Предопределённые константы',
  ),
  'up' => 
  array (
    0 => 'book.xpass.php',
    1 => 'Xpass',
  ),
  'prev' => 
  array (
    0 => 'xpass.installation.php',
    1 => 'Установка с помощью PECL',
  ),
  'next' => 
  array (
    0 => 'ref.xpass.php',
    1 => 'Функции Xpass',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/xpass/constants.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="xpass.constants" class="appendix">
 <h1 class="title">Предопределённые константы</h1>

 
<p class="simpara">
 Следующие константы определяются модулем
 и доступны, только если модуль либо собрали в PHP,
 либо динамически загрузили при выполнении кода.
</p>

 <p class="simpara">
  Модуль Xpass предоставляет набор констант:
  константы семейства <strong><code><a href="xpass.constants.php#constant.crypt-prefix-std-des">CRYPT_PREFIX_<span class="replaceable">*</span></a></code></strong>,
  которые обозначают методы хеширования для параметра prefix функции <span class="function"><a href="function.crypt-gensalt.php" class="function">crypt_gensalt()</a></span>,
  константы семейства <strong><code><a href="xpass.constants.php#constant.crypt-salt-ok">CRYPT_SALT_<span class="replaceable">*</span></a></code></strong> c кодами ошибок,
  которые возвращает функция <span class="function"><a href="function.crypt-checksalt.php" class="function">crypt_checksalt()</a></span>, и константы семейства
  <strong><code><a href="password.constants.php#constant.password-bcrypt">PASSWORD_<span class="replaceable">*</span></a></code></strong>, которые обозначают
  алгоритмы хеширования паролей для параметра algo функции <span class="function"><a href="function.password-hash.php" class="function">password_hash()</a></span>.
 </p>

 <dl id="xpass.constants.algo">
  <strong class="title">Методы хеширования</strong>
  
   <dt id="constant.crypt-prefix-std-des">
    <strong><code><a href="xpass.constants.php#constant.crypt-prefix-std-des">CRYPT_PREFIX_STD_DES</a></code></strong>
    (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Оригинальный метод хеширования из ОС Unix V7, который работает на основе блочного шифра DES.
     Парольную фразу, которую захешировали методом DES, возможно раскрыть,
     поскольку алгоритм нетребователен к ресурсам оборудования. Простота перебора DES-хешей объясняется тем,
     что метод выдаёт только <code class="literal">4096</code> возможных солей и 2**56 парольных фраз
     и обрезает до 8 символов.
     Из-за слабости DES-хешей шифром пользуются только при поддержке старых операционных систем, которые не поддерживают
     никаких других алгоритмов генерации хешей.
    </span>
   </dd>
  
  
   <dt id="constant.crypt-prefix-ext-des">
    <strong><code><a href="xpass.constants.php#constant.crypt-prefix-ext-des">CRYPT_PREFIX_EXT_DES</a></code></strong>
    (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Расширение традиционного шифра DES, которое устраняет ограничение длины,
     увеличивает размер соли и разрешает настраивать цену обработки хеша.
     Метод берёт начало в ОС BSD/OS компании BSDI и за счёт библиотеки FreeSec за авторством
     Дэвида Баррена (David Burren) также доступен по крайней мере в системах NetBSD, OpenBSD и FreeBSD.
     Качество этого метода превосходит традиционные алгоритмы DES и bigcrypt,
     но алгоритмом по-прежнему стараются не пользоваться для новых хешей.
    </span>
   </dd>
  
  
   <dt id="constant.crypt-prefix-md5">
    <strong><code><a href="xpass.constants.php#constant.crypt-prefix-md5">CRYPT_PREFIX_MD5</a></code></strong>
    (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Хеш работает на основе алгоритма MD5, который первоначально разработал Пол-Хеннинг Камп (Poul-Henning Kamp) для ОС FreeBSD.
     Алгоритм поддерживается большей частью свободных Unix-систем и более новыми версиями ОС Solaris.
     Этот хеш не такой слабый, как хеши на основе алгоритма DES,
     но MD5 настолько дёшев для перебора на современном оборудовании, что им лучше не пользоваться для генерации новых хешей.
     Цена обработки не настраивается.
    </span>
   </dd>
  
  
   <dt id="constant.crypt-prefix-blowfish">
    <strong><code><a href="xpass.constants.php#constant.crypt-prefix-blowfish">CRYPT_PREFIX_BLOWFISH</a></code></strong>
    (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Хеш работает на основе блочного шифра Blowfish, который модифицировали для генерации сверхдорогого расписания ключей.
     Алгоритм первоначально разработали Нильс Провос (Niels Provos) и Дэвид Мазьер (David Mazieres)
     для ОС OpenBSD. Алгоритм также поддерживается в последних версиях ОС FreeBSD и NetBSD,
     в Solaris 10 и новее и в ряде дистрибутивов GNU/*/Linux.
    </span>
   </dd>
  
  
   <dt id="constant.crypt-prefix-sha256">
    <strong><code><a href="xpass.constants.php#constant.crypt-prefix-sha256">CRYPT_PREFIX_SHA256</a></code></strong>
    (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Хеш работает на основе алгоритма SHA-2 с 256-битным выводом, который первоначально разработал
     Ульрих Дреппер (Ulrich Drepper) для GNU-библиотеки libc. Алгоритм поддерживается в ОС Linux,
     но не получил распространения в других местах. Алгоритм допустим для генерации новых хешей.
     Значение параметра цены обработки по умолчанию равняется <code class="literal">5000</code>,
     что чрезвычайно мало для современного оборудования.
    </span>
   </dd>
  
  
   <dt id="constant.crypt-prefix-sha512">
    <strong><code><a href="xpass.constants.php#constant.crypt-prefix-sha512">CRYPT_PREFIX_SHA512</a></code></strong>
    (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Хеш работает на основе алгоритма SHA-2 с 512-битным выводом, который первоначально разработал
     Ульрих Дреппер (Ulrich Drepper) для GNU-библиотеки libc. Алгоритм поддерживается в ОС Linux,
     но не получил распространения в других местах. Алгоритм допустим для генерации новых хешей.
     Значение параметра цены обработки по умолчанию равняется <code class="literal">5000</code>,
     что чрезвычайно мало для современного оборудования.
    </span>
   </dd>
  
  
   <dt id="constant.crypt-prefix-scrypt">
    <strong><code><a href="xpass.constants.php#constant.crypt-prefix-scrypt">CRYPT_PREFIX_SCRYPT</a></code></strong>
    (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Scrypt — функция выведения ключа на основе пароля, которую создал Колин Персиваль (Colin Percival),
     первоначально для онлайн-сервиса резервного копирования Tarsnap.
     Алгоритм разработали, чтобы сделать дорогостоящим выполнение масштабных атак
     на пользовательское оборудование, требуя больших объёмов памяти.
     В 2016 году совет IETF опубликовал алгоритм scrypt как стандарт RFC 7914.
    </span>
   </dd>
  
  
   <dt id="constant.crypt-prefix-gost-yescrypt">
    <strong><code><a href="xpass.constants.php#constant.crypt-prefix-gost-yescrypt">CRYPT_PREFIX_GOST_YESCRYPT</a></code></strong>
    (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Алгоритм Gost-yescrypt использует данные вывода функции yescrypt как входное сообщение для HMAC-кода
     с хеш-функцией межгосударственного криптографического стандарта ГОСТ Р 34.11-2012 — Streebog с 256-битным дайджестом.
     Поэтому криптографические свойства функции yescrypt заменяются свойствами хеш-функции ГОСТа.
     Этот метод хеширования полезен в приложениях, которым требуется современное хеширование парольной фразы,
     но которые вынуждены полагаться на алгоритмы ГОСТа.
     Совет IETF опубликовал хеш-функцию «Стрибог», которую описывает ГОСТ Р 34.11-2012, как стандарт RFC 6986.
     Алгоритм допустим для генерации новых хешей, если требуется.
    </span>
   </dd>
  
  
   <dt id="constant.crypt-prefix-yescrypt">
    <strong><code><a href="xpass.constants.php#constant.crypt-prefix-yescrypt">CRYPT_PREFIX_YESCRYPT</a></code></strong>
    (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Yescrypt — масштабируемая схема хеширования парольной фразы, разработка специалиста по безопасности из России
     Александра Песляка по прозвищу Solar Designer, которая основана на функции scrypt Колина Персиваля.
     Хотя стойкость функции yescrypt к атакам подбора пароля обусловлена её алгоритмом,
     криптографическую безопасность функции гарантирует алгоритм SHA-256 на внешнем уровне.
     Хеш-функцию SHA-256 опубликовал институт NIST в стандарте FIPS PUB 180-2
     и его следующих редакциях наподобие FIPS PUB 180-4, и совет IETF как стандарт RFC 4634
     и впоследствии стандарт RFC 6234.
     Алгоритм рекомендуют для генерации новых хешей.
    </span>
   </dd>
  
  
   <dt id="constant.crypt-prefix-sm3crypt">
    <strong><code><a href="xpass.constants.php#constant.crypt-prefix-sm3crypt">CRYPT_PREFIX_SM3CRYPT</a></code></strong>
    (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Хеш, основанный на хеш-функции ShangMi 3 с 256-битным выходом, который использует ту же конструкцию,
     что и sha256crypt и/или sha512crypt.
     Поддерживается в EulerOS, Kylin, openEuler и openKylin, но не распространен в других системах.
     Приемлем для новых хешей, где это необходимо. Параметр стоимости обработки по умолчанию равен 5000,
     что слишком мало для современного оборудования.
    </span>
    <span class="simpara">
     Доступно с версии 1.2.0 с libcxcrypt &gt;= 4.5.0.
    </span>
   </dd>
  
  
   <dt id="constant.crypt-prefix-sm3-yescrypt">
    <strong><code><a href="xpass.constants.php#constant.crypt-prefix-sm3-yescrypt">CRYPT_PREFIX_SM3_YESCRYPT</a></code></strong>
    (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Sm3-yescrypt использует вывод yescrypt в качестве входного сообщения для HMAC
     с хеш-функцией ShangMi 3 с 256-битным дайджестом. Таким образом, криптографические свойства yescrypt
     заменяются свойствами хеш-функции ShangMi 3. Метод хеширования полезен в приложениях, которые требуют
     современного хеширования паролей, но должны полагаться на алгоритмы, одобренные
     Государственным управлением коммерческой криптографии Китая (OSCCA).
     Хеш-функция ShangMi 3 была опубликована в части 3: «Специализированные хеш-функции» стандарта ISO/IEC 10118-3:2018.
     Приемлема для новых хешей, где это требуется.
    </span>
    <span class="simpara">
     Доступно с версии 1.2.0 с libcxcrypt &gt;= 4.5.0.
    </span>
   </dd>
  
 </dl>

 <dl id="xpass.constants.error">
  <strong class="title">Error codes</strong>
  
   <dt id="constant.crypt-salt-ok">
    <strong><code><a href="xpass.constants.php#constant.crypt-salt-ok">CRYPT_SALT_OK</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Ошибки не возникали.
    </span>
   </dd>
  
  
   <dt id="constant.crypt-salt-invalid">
    <strong><code><a href="xpass.constants.php#constant.crypt-salt-invalid">CRYPT_SALT_INVALID</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Неизвестный метод хеширования или недопустимые параметры.
    </span>
   </dd>
  
  
   <dt id="constant.crypt-salt-method-disabled">
    <strong><code><a href="xpass.constants.php#constant.crypt-salt-method-disabled">CRYPT_SALT_METHOD_DISABLED</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Метод хеширования запретили.
    </span>
   </dd>
  
  
   <dt id="constant.crypt-salt-method-legacy">
    <strong><code><a href="xpass.constants.php#constant.crypt-salt-method-legacy">CRYPT_SALT_METHOD_LEGACY</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Метод хеширования ненадёжен.
    </span>
   </dd>
  
  
   <dt id="constant.crypt-salt-too-cheap">
    <strong><code><a href="xpass.constants.php#constant.crypt-salt-too-cheap">CRYPT_SALT_TOO_CHEAP</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Чрезмерно низкая цена обработки.
    </span>
   </dd>
  
 </dl>

 <dl id="xpass.constants.password">
  <strong class="title">Парольные алгоритмы</strong>
  
   <dt id="constant.password-sha512">
    <strong><code><a href="xpass.constants.php#constant.password-sha512">PASSWORD_SHA512</a></code></strong>
    (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Константа <strong><code><a href="xpass.constants.php#constant.password-sha512">PASSWORD_SHA512</a></code></strong> помогает создавать новые хеши
     паролей по алгоритму <strong><code><a href="xpass.constants.php#constant.crypt-prefix-sha512">CRYPT_PREFIX_SHA512</a></code></strong>.
    </span>
   </dd>
  
  
   <dt id="constant.password-yescrypt">
    <strong><code><a href="xpass.constants.php#constant.password-yescrypt">PASSWORD_YESCRYPT</a></code></strong>
    (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Константа <strong><code><a href="xpass.constants.php#constant.password-yescrypt">PASSWORD_YESCRYPT</a></code></strong> помогает создавать новые хеши
     паролей по алгоритму <strong><code><a href="xpass.constants.php#constant.crypt-prefix-yescrypt">CRYPT_PREFIX_YESCRYPT</a></code></strong>.
    </span>
   </dd>
  
  
   <dt id="constant.password-sm3crypt">
    <strong><code><a href="xpass.constants.php#constant.password-sm3crypt">PASSWORD_SM3CRYPT</a></code></strong>
    (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Константа <strong><code><a href="xpass.constants.php#constant.password-sm3crypt">PASSWORD_SM3CRYPT</a></code></strong> помогает создавать новые хеши
     паролей по алгоритму <strong><code><a href="xpass.constants.php#constant.crypt-prefix-sm3crypt">CRYPT_PREFIX_SM3CRYPT</a></code></strong>.
    </span>
    <span class="simpara">
     Доступно с версии 1.2.0 с libcxcrypt &gt;= 4.5.0.
    </span>
   </dd>
  
  
   <dt id="constant.password-sm3-yescrypt">
    <strong><code><a href="xpass.constants.php#constant.password-sm3-yescrypt">PASSWORD_SM3_YESCRYPT</a></code></strong>
    (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Константа <strong><code><a href="xpass.constants.php#constant.password-sm3-yescrypt">PASSWORD_SM3_YESCRYPT</a></code></strong> помогает создавать новые хеши
     паролей по алгоритму <strong><code><a href="xpass.constants.php#constant.crypt-prefix-sm3-yescrypt">CRYPT_PREFIX_SM3_YESCRYPT</a></code></strong>.
    </span>
    <span class="simpara">
     Доступно с версии 1.2.0 с libcxcrypt &gt;= 4.5.0.
    </span>
   </dd>
  
 </dl>
</div>
<?php manual_footer($setup); ?>