diff --git a/reference/network/functions/header.xml b/reference/network/functions/header.xml index 70fbc489a..378e09fcd 100644 --- a/reference/network/functions/header.xml +++ b/reference/network/functions/header.xml @@ -1,5 +1,5 @@ - + @@ -287,7 +287,7 @@ exit; setcookie http_response_code header_remove - header_list + headers_list Раздел документации HTTP-аутентификации diff --git a/reference/password/functions/password-hash.xml b/reference/password/functions/password-hash.xml index 357131bfd..f9ec35f59 100644 --- a/reference/password/functions/password-hash.xml +++ b/reference/password/functions/password-hash.xml @@ -1,5 +1,5 @@ - + @@ -404,8 +404,8 @@ echo 'Хеш Argon2i: ' . password_hash('rasmuslerdorf', PASSWORD_ARGON2I); password_verify + password_needs_rehash crypt - Пользовательская реализация sodium_crypto_pwhash_str diff --git a/reference/password/functions/password-verify.xml b/reference/password/functions/password-verify.xml index 24f66f24e..acd1485c6 100644 --- a/reference/password/functions/password-verify.xml +++ b/reference/password/functions/password-verify.xml @@ -1,5 +1,5 @@ - + @@ -65,6 +65,10 @@ Пример использования <function>password_verify</function> + + Это упрощённый пример; при необходимости рекомендуется пересоздать правильный пароль; + смотрите пример в описании функции password_needs_rehash. + + password_needs_rehash password_hash пользовательская реализация sodium_crypto_pwhash_str_verify diff --git a/reference/random/book.xml b/reference/random/book.xml index 1fcd0c2f7..05884f513 100644 --- a/reference/random/book.xml +++ b/reference/random/book.xml @@ -1,5 +1,5 @@ - + @@ -21,11 +21,12 @@ &reference.random.random.randomizer; &reference.random.random.engine; + &reference.random.random.cryptosafeengine; + + &reference.random.random.engine.secure; &reference.random.random.engine.mt19937; &reference.random.random.engine.pcgoneseq128xslrr64; &reference.random.random.engine.xoshiro256starstar; - &reference.random.random.cryptosafeengine; - &reference.random.random.engine.secure; &reference.random.random.randomerror; &reference.random.random.brokenrandomengineerror; diff --git a/reference/random/random/engine/xoshiro256starstar/jump.xml b/reference/random/random/engine/xoshiro256starstar/jump.xml index 0abc107c8..b1ce15e45 100644 --- a/reference/random/random/engine/xoshiro256starstar/jump.xml +++ b/reference/random/random/engine/xoshiro256starstar/jump.xml @@ -1,5 +1,5 @@ - + @@ -47,16 +47,65 @@ jump(); + + $fiber = new Fiber(static function () use ($fiberRng, $i): void { + $randomizer = new Randomizer($fiberRng); + + while (true) { + Fiber::suspend(); + echo "{$i}: " . $randomizer->getInt(0, 100), PHP_EOL; + } + }); + $fiber->start(); + + $fibers[] = $fiber; +} + + +// Даже если файберы выполняются в случайном порядке, они будут выводить одно и то же значение каждый раз, +// потому что у каждого из них свой собственный уникальный экземпляр RNG. +$randomizer = new Randomizer(); + +$fibers = $randomizer->shuffleArray($fibers); +foreach ($fibers as $fiber) { + $fiber->resume(); +} + +$fibers = $randomizer->shuffleArray($fibers); +foreach ($fibers as $fiber) { + $fiber->resume(); +} ?> ]]> &example.outputs.similar; diff --git a/reference/random/random/engine/xoshiro256starstar/jumplong.xml b/reference/random/random/engine/xoshiro256starstar/jumplong.xml index 693f0611c..7bde4d1ee 100644 --- a/reference/random/random/engine/xoshiro256starstar/jumplong.xml +++ b/reference/random/random/engine/xoshiro256starstar/jumplong.xml @@ -1,5 +1,5 @@ - + @@ -28,7 +28,7 @@ Метод может быть объединён с Random\Engine\Xoshiro256StarStar::jump для дальнейшего разделения каждой из 264 последовательностей, - сгенерированных данным методом, на 2128 последовательности по 264 значения каждая. + сгенерированных данным методом, на 264 последовательности по 2128 значения каждая. @@ -52,16 +52,41 @@ jumpLong(); +$parent2 = clone $blueprintRng; +$blueprintRng->jumpLong(); + +// У каждого из дочерних движков свой собственный блок из 2**128 значений, +взятый из блока 2**192 значений их родительского движка. +$child1a = clone $parent1; +$parent1->jump(); +$child1b = clone $parent1; +$parent1->jump(); + +$child2a = clone $parent2; +$parent2->jump(); +$child2b = clone $parent2; +$parent2->jump(); + +echo "Дочерний 1A: ", bin2hex( $child1a->generate() ), "\n"; +echo "Дочерний 1B: ", bin2hex( $child1b->generate() ), "\n"; +echo "Дочерний 2A: ", bin2hex( $child2a->generate() ), "\n"; +echo "Дочерний 2B: ", bin2hex( $child2b->generate() ), "\n"; ?> ]]> &example.outputs.similar;