Skip to content

Commit e4258e2

Browse files
committed
Fix #6103
1 parent ddd3478 commit e4258e2

File tree

1 file changed

+16
-23
lines changed

1 file changed

+16
-23
lines changed

components/security/secure_tools.rst

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,39 +9,32 @@ Generating a Secure random Number
99
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1010

1111
Whenever you need to generate a secure random number, you are highly
12-
encouraged to use the Symfony
13-
:class:`Symfony\\Component\\Security\\Core\\Util\\SecureRandom` class::
12+
encouraged to use the
13+
:phpfunction:`random_bytes` function::
1414

15-
use Symfony\Component\Security\Core\Util\SecureRandom;
15+
$random = random_bytes(10);
1616

17-
$generator = new SecureRandom();
18-
$random = $generator->nextBytes(10);
19-
20-
The
21-
:method:`Symfony\\Component\\Security\\Core\\Util\\SecureRandom::nextBytes`
22-
method returns a random string composed of the number of characters passed as
23-
an argument (10 in the above example).
24-
25-
The SecureRandom class works better when OpenSSL is installed. But when it's
26-
not available, it falls back to an internal algorithm, which needs a seed file
27-
to work correctly. Just pass a file name to enable it::
28-
29-
use Symfony\Component\Security\Core\Util\SecureRandom;
30-
31-
$generator = new SecureRandom('/some/path/to/store/the/seed.txt');
32-
33-
$random = $generator->nextBytes(10);
34-
$hashedRandom = md5($random); // see tip below
17+
The function returns a random string, suitable for cryptographic use, of
18+
the number bytes passed as an argument (10 in the above example).
3519

3620
.. note::
3721

3822
If you're using the Symfony Framework, you can get a secure random number
3923
generator via the ``security.secure_random`` service.
4024

25+
.. note::
26+
27+
PHP 7 and up provide the ``random_bytes()`` function natively, for older
28+
versions of PHP a polyfill is provided by the `Symfony Polyfill Component`_
29+
and the `paragonie/random_compat package`_.
30+
4131
.. tip::
4232

43-
The ``nextBytes()`` method returns a binary string which may contain the
33+
The ``random_bytes()`` function returns a binary string which may contain the
4434
``\0`` character. This can cause trouble in several common scenarios, such
4535
as storing this value in a database or including it as part of the URL. The
46-
solution is to hash the value returned by ``nextBytes()`` (to do that, you
36+
solution is to hash the value returned by ``random_bytes()`` (to do that, you
4737
can use a simple ``md5()`` PHP function).
38+
39+
.. _`Symfony Polyfill Component`: https://github.com/symfony/polyfill
40+
.. _`paragonie/random_compat package`: https://github.com/paragonie/random_compat

0 commit comments

Comments
 (0)