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

contributors($setup);

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

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

 <p class="para">
  <dl>
   
    <dt id="constant.password-bcrypt">
     <strong><code><a href="password.constants.php#constant.password-bcrypt">PASSWORD_BCRYPT</a></code></strong>
     (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
    </dt>
    <dd>
     <p class="para">
      Константа <strong><code><a href="password.constants.php#constant.password-bcrypt">PASSWORD_BCRYPT</a></code></strong> помогает создавать новые
      хеши паролей по алгоритму <strong><code><a href="string.constants.php#constant.crypt-blowfish">CRYPT_BLOWFISH</a></code></strong>.
     </p>
     <p class="para">
      Константа выдаёт хеши в формате шифрования &quot;$2y$&quot; длиной 60 символов.
     </p>
     <p class="para">
      Константа поддерживает следующие опции:
     </p>
     <ul class="itemizedlist">
      <li class="listitem">
       <p class="para">
        <code class="literal">salt</code> (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>) — ручное значение соли для хеширования пароля.
        Обратите внимание, значение переопределит и предотвратит автоматическую
        генерацию соли.
       </p>
       <p class="para">
        При пропуске параметра функция <span class="function"><a href="function.password-hash.php" class="function">password_hash()</a></span> сгенерирует случайную соль
        для каждого пароля. Это предпочтительный способ,
        а с PHP 7.0.0 опцию salt объявили устаревшей.
       </p>
      </li>
      <li class="listitem">
       <p class="para">
        <code class="literal">cost</code> (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>) — алгоритмическая стоимость генерации хеша.
        Примеры этих значений приводит страница с описанием
        функции <span class="function"><a href="function.crypt.php" class="function">crypt()</a></span>.
       </p>
       <p class="para">
        При пропуске параметра функция возьмёт значение по умолчанию — <code class="literal">12</code>.
        Это безопасная базовая стоимость, но на производительном оборудовании
        значение часто увеличивают.
       </p>
      </li>
     </ul>
    </dd>
   
   
    <dt id="constant.password-bcrypt-default-cost">
     <strong><code><a href="password.constants.php#constant.password-bcrypt-default-cost">PASSWORD_BCRYPT_DEFAULT_COST</a></code></strong>
     (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
    </dt>
    <dd>
     <p class="para">
     </p>
     <p class="para">
     </p>
    </dd>
   
   
    <dt id="constant.password-argon2i">
     <strong><code><a href="password.constants.php#constant.password-argon2i">PASSWORD_ARGON2I</a></code></strong>
     (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
    </dt>
    <dd>
     <p class="para">
      Константа <strong><code><a href="password.constants.php#constant.password-argon2i">PASSWORD_ARGON2I</a></code></strong> помогает создавать новые хеши
      паролей по алгоритму Argon2i.
     </p>
     <p class="para">
      Константа поддерживает следующие опции:
     </p>
     <ul class="itemizedlist">
      <li class="listitem">
       <p class="para">
        <code class="literal">memory_cost</code> (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>) - максимальный размер
        памяти в кибибайтах для вычисления хеша Argon2.
        Значение по умолчанию равняется <strong><code><a href="password.constants.php#constant.password-argon2-default-memory-cost">PASSWORD_ARGON2_DEFAULT_MEMORY_COST</a></code></strong>.
       </p>
      </li>
      <li class="listitem">
       <p class="para">
        <code class="literal">time_cost</code> (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>) — максимальное время,
        которое функции разрешается потратить на вычисление хеша Argon2.
        Значение по умолчанию равняется <strong><code><a href="password.constants.php#constant.password-argon2-default-time-cost">PASSWORD_ARGON2_DEFAULT_TIME_COST</a></code></strong>.
       </p>
      </li>
      <li class="listitem">
       <p class="para">
        <code class="literal">threads</code> (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>) — количество потоков
        для вычисления хеша Argon2.
        Значение по умолчанию равняется <strong><code><a href="password.constants.php#constant.password-argon2-default-threads">PASSWORD_ARGON2_DEFAULT_THREADS</a></code></strong>.
        Константа доступна только с модулем libargon2, но не с реализацией через библиотеку libsodium.
       </p>
      </li>
     </ul>
     <p class="para">
      Константа доступна с PHP 7.2.0.
     </p>
    </dd>
   
   
    <dt id="constant.password-argon2id">
     <strong><code><a href="password.constants.php#constant.password-argon2id">PASSWORD_ARGON2ID</a></code></strong>
     (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
    </dt>
    <dd>
     <p class="para">
      Константа <strong><code><a href="password.constants.php#constant.password-argon2id">PASSWORD_ARGON2ID</a></code></strong> помогает создавать хеши паролей
      по алгоритму Argon2id. Поддерживаются те же опции,
      что и для константы <a href="password.constants.php#constant.password-argon2i" class="link"><strong><code><a href="password.constants.php#constant.password-argon2i">PASSWORD_ARGON2I</a></code></strong></a>.
     </p>
     <p class="para">
      Константа доступна с PHP 7.3.0.
     </p>
    </dd>
   
   
    <dt id="constant.password-argon2-default-memory-cost">
     <strong><code><a href="password.constants.php#constant.password-argon2-default-memory-cost">PASSWORD_ARGON2_DEFAULT_MEMORY_COST</a></code></strong>
     (тип <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
    </dt>
    <dd>
     <p class="para">
      Объем памяти по умолчанию в байтах, который функция использует при попытке
      вычислить хеш.
     </p>
     <p class="para">
      Константа доступна с PHP 7.2.0.
     </p>
    </dd>
   
   
    <dt id="constant.password-argon2-default-time-cost">
     <strong><code><a href="password.constants.php#constant.password-argon2-default-time-cost">PASSWORD_ARGON2_DEFAULT_TIME_COST</a></code></strong>
     (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
    </dt>
    <dd>
     <p class="para">
      Ограничение времени по умолчанию на вычисление хеша.
     </p>
     <p class="para">
      Константа доступна с PHP 7.2.0.
     </p>
    </dd>
   
   
    <dt id="constant.password-argon2-default-threads">
     <strong><code><a href="password.constants.php#constant.password-argon2-default-threads">PASSWORD_ARGON2_DEFAULT_THREADS</a></code></strong>
     (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
    </dt>
    <dd>
     <p class="para">
      Количество потоков по умолчанию для библиотеки Argon2lib.
      Константа недоступна с реализацией через библиотеку libsodium.
     </p>
     <p class="para">
      Доступно с PHP 7.2.0.
     </p>
    </dd>
   
   
    <dt id="constant.password-argon2-provider">
     <strong><code><a href="password.constants.php#constant.password-argon2-provider">PASSWORD_ARGON2_PROVIDER</a></code></strong>
     (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
    </dt>
    <dd>
     <p class="para">
     </p>
     <p class="para">
      Константа доступна с PHP 7.4.0.
     </p>
    </dd>
   
   
    <dt id="constant.password-default">
     <strong><code><a href="password.constants.php#constant.password-default">PASSWORD_DEFAULT</a></code></strong>
     (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
    </dt>
    <dd>
     <p class="para">
      Алгоритм хеширования по умолчанию, если другой алгоритм не указали принудительно.
      Стандартный алгоритм изменится в новых выпусках PHP, когда в язык включат поддержку
      новых усиленных алгоритмов хеширования.
     </p>
     <p class="para">
      Из-за вероятного изменения значения константы в будущем
      изменится и длина результирующего хеша.
      Поэтому хеши, которые получили через константу <strong><code><a href="password.constants.php#constant.password-default">PASSWORD_DEFAULT</a></code></strong>,
      лучше хранить так, чтобы сохранялись хеши произвольной длины.
      Ширину поля для хранения хешей рекомендуют устанавливать равной <code class="literal">255</code> байтам.
     </p>
     <span class="simpara">
      Эта константа — псевдоним константы <strong><code><a href="password.constants.php#constant.password-bcrypt">PASSWORD_BCRYPT</a></code></strong>.
     </span>
    </dd>
   
  </dl>
 </p>

 <p class="formalpara">
  <h5 class="title">Список изменений</h5>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Версия</th>
       <th>Описание</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>7.4.0</td>
       <td>
        Значения идентификаторов алгоритма пароля — <strong><code><a href="password.constants.php#constant.password-bcrypt">PASSWORD_BCRYPT</a></code></strong>, <strong><code><a href="password.constants.php#constant.password-argon2i">PASSWORD_ARGON2I</a></code></strong>,
        <strong><code><a href="password.constants.php#constant.password-argon2id">PASSWORD_ARGON2ID</a></code></strong> и <strong><code><a href="password.constants.php#constant.password-default">PASSWORD_DEFAULT</a></code></strong> — стали значениями с типом <span class="type"><a href="language.types.string.php" class="type string">string</a></span>.
        Раньше значения принадлежали типу <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>.
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </p>

</div>
<?php manual_footer($setup); ?>