diff --git a/reference/password/functions/password-hash.xml b/reference/password/functions/password-hash.xml
index 98808e768..0242fcf63 100644
--- a/reference/password/functions/password-hash.xml
+++ b/reference/password/functions/password-hash.xml
@@ -16,41 +16,40 @@
arrayoptions[]
- password_hash создаёт хеш пароля используя сильный,
- необратимый алгоритм хеширования.
+ Функция password_hash создаёт хеш пароля, используя сильный необратимый алгоритм хеширования.
- В данный момент поддерживаются следующие алгоритмы:
+ Поддерживаются следующие алгоритмы:
- PASSWORD_DEFAULT - используется алгоритм bcrypt (по умолчанию с PHP 5.5.0).
- Обратите внимание, что используемый алгоритм может со временем меняться на более
- сильный, когда таковой добавляется в PHP. Соответственно и длина результата может со
- временем меняться. В связи с этим рекомендуется выбирать длину поля для хранения
- в базе данных более 60 символов (255 символов могло быть хорошим вариантом).
+ PASSWORD_DEFAULT — будет выбран алгоритм bcrypt (по умолчанию с PHP 5.5.0).
+ Обратите внимание, алгоритм может измениться на более
+ сильный, когда такой добавится в PHP. При изменении алгоритма и длина результата
+ также может измениться. Поэтому длину поля для хранения
+ в базе данных лучше устанавливать более 60 символов (255 символов будет хорошим значением).
- PASSWORD_BCRYPT - использует алгоритм
- CRYPT_BLOWFISH. Генерирует стандартный хеш, совместимый
- с генерированным функцией crypt с использованием
- идентификатора "$2y$". В результате будет сгенерирована строка длиной 60 символов&return.falseforfailure;.
+ PASSWORD_BCRYPT — будет выбран алгоритм
+ CRYPT_BLOWFISH. Генерирует стандартный хеш с идентификатором "$2y$",
+ совместимый с тем, который генерирует функция crypt.
+ В результате будет сгенерирована строка длиной 60 символов&return.falseforfailure;.
- PASSWORD_ARGON2I - Использовать алгоритм хеширования Argon2i.
- Этот алгоритм доступен только если PHP собран с поддержкой Argon2.
+ PASSWORD_ARGON2I — будет выбран алгоритм хеширования Argon2i.
+ Этот алгоритм будет доступен, только если PHP собран с поддержкой Argon2.
- PASSWORD_ARGON2ID - Использовать алгоритм хеширования Argon2id.
- Этот алгоритм доступен только если PHP собран с поддержкой Argon2.
+ PASSWORD_ARGON2ID — будет выбран алгоритм хеширования Argon2id.
+ Этот алгоритм будет доступен, только если PHP собран с поддержкой Argon2.
@@ -62,12 +61,12 @@
- salt (string) - для самостоятельного задания соли для хеширования.
- Обратите внимание, что это приведёт к переопределению и предотвращению
- автоматического создания соли.
+ salt (string) — для самостоятельного задания соли для хеширования.
+ Обратите внимание, что это приведёт к переопределению и предотвратит
+ автоматическое создание соли.
- Если не задано, то password_hash будет генерировать
+ Если не задано, то функция password_hash будет генерировать
случайную соль для каждого хешируемого пароля. Это предпочтительный
режим работы.
@@ -81,14 +80,14 @@
- cost (int) - задаёт необходимую алгоритмическую сложность.
- Пример использования этого значения можно посмотреть на странице посвящённой
+ cost (int) — задаёт алгоритмическую сложность.
+ Пример с этой опцией можно посмотреть на странице, посвящённой
функции crypt.
- Если не задано, то будет использовано значение по умолчанию 10.
- Это хорошая базовая стоимость, но вы можете её увеличить в зависимости
- от возможностей своего оборудования.
+ Если не задано, то будет выбрано значение по умолчанию: 10.
+ Это хорошая базовая стоимость, но можно увеличить её,
+ если позволяет производительность оборудования.
@@ -101,27 +100,27 @@
- memory_cost (int) - Максимальный размер
- памяти (в килобайтах), которую можно использовать для вычисления хеша Argon2.
- По умолчанию PASSWORD_ARGON2_DEFAULT_MEMORY_COST.
+ memory_cost (int) — максимальный размер
+ памяти (в килобайтах), которая будет использована для вычисления хеша Argon2.
+ По умолчанию будет выбрано значение константы PASSWORD_ARGON2_DEFAULT_MEMORY_COST.
- time_cost (int) - Максимально возможное время,
- которое можно потратить для вычисления хеша Argon2.
- По умолчанию PASSWORD_ARGON2_DEFAULT_TIME_COST.
+ time_cost (int) — максимально возможное время,
+ которое можно потратить на вычисление хеша Argon2.
+ По умолчанию будет выбрано значение константы PASSWORD_ARGON2_DEFAULT_TIME_COST.
- threads (int) - Количество потоков, которые
- можно использовать для вычисления хеша Argon2.
- По умолчанию PASSWORD_ARGON2_DEFAULT_THREADS.
+ threads (int) — количество потоков, которые
+ можно задействовать для вычисления хеша Argon2.
+ По умолчанию будет выбрано значение константы PASSWORD_ARGON2_DEFAULT_THREADS.
- Доступно только тогда, когда PHP использует libargon2, но не при реализации libsodium.
+ Доступно только тогда, когда в PHP доступен модуль libargon2, но не при реализации libsodium.
@@ -141,7 +140,7 @@
Использование алгоритма PASSWORD_BCRYPT приведёт
- к обрезанию поля password до максимальной длины 72 байта.
+ к обрезанию поля password до максимальной длины — 72 байта.
@@ -161,8 +160,8 @@
&password.parameter.options;
- Если не задано, то будет использована стандартная стоимость и соль будет
- генерироваться автоматически.
+ Если не задано, то будет использована стандартная стоимость, и соль будет
+ сгенерирована автоматически.
@@ -175,10 +174,10 @@
Возвращает хешированный пароль.
- Использованный алгоритм, стоимость и соль будут возвращены как часть хеша.
- Таким образом, информация, необходимая для проверки хеша будет в него
+ Выбранный алгоритм, стоимость и соль будут возвращены как часть хеша.
+ Таким образом, информация, необходимая для проверки хеша, будет в него
включена. Это позволит функции password_verify проверять
- хеш без необходимости отдельного хранения информации о соли и алгоритме.
+ хеш без отдельного хранения информации о соли и алгоритме.
@@ -197,9 +196,9 @@
8.0.0
- password_hash больше не возвращает значение &false; в случае возникновения ошибки,
- вместо этого будет выброшено исключение ValueError,
- если алгоритм хеширования пароля недействителен или Error,
+ password_hash больше не возвращает значение &false; в случае возникновения ошибки.
+ Вместо этого будет выброшено исключение ValueError,
+ если алгоритм хеширования пароля недействителен, или Error,
если хеширование пароля не удалось из-за неизвестной ошибки.
@@ -212,7 +211,7 @@
7.4.0
- Параметр algo сейчас ожидает строку (&string;), но всё ещё принимает
+ Параметр algo теперь ожидает строку (&string;), но всё ещё принимает
число (&integer;) для обратной совместимости.
@@ -249,12 +248,12 @@
@@ -296,19 +295,20 @@ $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
- Пример поиска хорошего значения стоимости для password_hash
+ Пример поиска хорошего значения стоимости для функции password_hash
- Пример использования password_hash с Argon2i
+ Пример использования функции password_hash с Argon2i
Как было замечено выше, опция salt была объявлена
устаревшей в PHP 7.0 и будет вызывать соответствующее предупреждение.
- Поддержка ручного задания соли может быть удалена в более новых версиях.
+ Поддержка ручного задания соли была удалена в PHP 8.0.
- Рекомендуется протестировать данную функцию на вашем железе для определения
+ Рекомендуется протестировать данную функцию на вашем оборудовании для определения
оптимального значения алгоритмической сложности. Убедитесь, что с выбранной
- сложностью функция выполняется быстрее 100 миллисекунд для интерактивных
- систем. Скрипт показанный выше поможет вам выбрать подходящее значение.
+ сложностью функция выполняется быстрее 350 миллисекунд для интерактивных
+ систем. Скрипт в приведённом выше примере поможет выбрать оптимальное значение.
@@ -387,14 +387,14 @@ echo 'Хеш Argon2i: ' . password_hash('rasmuslerdorf', PASSWORD_ARGON2I);
7.5.5, то задать по умолчанию его можно будет только в 7.7 (7.6 будет тем самым
полным релизом, в течение которого он должен присутствовать, от 7.6.0 до 7.7.0). Но
если новый алгоритм добавлен в 7.6.0, то его также можно будет задать по умолчанию
- в 7.7.0.
+ в версии 7.7.0.
Алгоритм по умолчанию может быть изменён только в полном релизе
- (7.3.0, 8.0.0, и т.д.), но не в промежуточных. Единственное исключение - это
- если в текущем алгоритме найдена критическая уязвимость.
+ (7.3.0, 8.0.0 и т. д.), но не в промежуточных. Единственное исключение —
+ это критическая уязвимость, найденная в текущем алгоритме.
diff --git a/reference/password/functions/password-needs-rehash.xml b/reference/password/functions/password-needs-rehash.xml
index 37f55c0c4..34ebcd690 100644
--- a/reference/password/functions/password-needs-rehash.xml
+++ b/reference/password/functions/password-needs-rehash.xml
@@ -1,5 +1,5 @@
-
+
@@ -75,7 +75,7 @@
7.4.0
- Параметр algo сейчас ожидает строку (&string;), но всё ещё принимает
+ Параметр algo теперь ожидает строку (&string;), но всё ещё принимает
число (&integer;) для обратной совместимости.
@@ -97,16 +97,18 @@
$password = 'rasmuslerdorf';
$hash = '$2y$10$YCFsG6elYca568hBi2pZ0.3LDL5wjgxct1N8w/oLR/jfHsiQwCqTS';
-// Параметр стоимости может изменяться в связи со сменой оборудования
-$options = array('cost' => 11);
+$algorithm = PASSWORD_BCRYPT;
+// Значение bcrypt-стоимости может измениться по мере роста производительности оборудования
+$options = ['cost' => 12];
-// Проверка сохранённого хеша с помощью пароля
+// Сравниваем сохранённый хеш с открытым паролем
if (password_verify($password, $hash)) {
- // Проверяем, не нужно ли использовать более новый алгоритм
- // или другую алгоритмическую стоимость
- if (password_needs_rehash($hash, PASSWORD_DEFAULT, $options)) {
- // Если таки да, перехешируем и сохраняем новый хеш
- $newHash = password_hash($password, PASSWORD_DEFAULT, $options);
+ // Проверяем, не изменился ли алгоритм или параметры
+ if (password_needs_rehash($hash, $algorithm, $options)) {
+ // Если были изменения, перехешируем и заменяем старый хеш новым
+ $newHash = password_hash($password, $algorithm, $options);
+
+ // Обновляем запись пользователя новым $newHash
}
// Авторизуем пользователя