@@ -10,38 +10,27 @@ Generating a Secure random Number
1010
1111Whenever you need to generate a secure random number, you are highly
1212encouraged to use the Symfony
13- :class: ` Symfony \\ Component \\ Security \\ Core \\ Util \\ SecureRandom ` class ::
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 versions 7.0.0 and up provide the ``random_bytes() `` function natively,
28+ on lower versions of PHP a polyfill is provided.
29+
4130.. tip ::
4231
43- The ``nextBytes () `` method returns a binary string which may contain the
32+ The ``random_bytes () `` function returns a binary string which may contain the
4433 ``\0 `` character. This can cause trouble in several common scenarios, such
4534 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
35+ solution is to hash the value returned by ``random_bytes () `` (to do that, you
4736 can use a simple ``md5() `` PHP function).
0 commit comments