[TASK] Remove ext:dbal from installation steps
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Classes / Crypto / Random.php
1 <?php
2 declare (strict_types=1);
3 namespace TYPO3\CMS\Core\Crypto;
4
5 /*
6 * This file is part of the TYPO3 CMS project.
7 *
8 * It is free software; you can redistribute it and/or modify it under
9 * the terms of the GNU General Public License, either version 2
10 * of the License, or any later version.
11 *
12 * For the full copyright and license information, please read the
13 * LICENSE.txt file that was distributed with this source code.
14 *
15 * The TYPO3 project - inspiring people to share!
16 */
17
18 /**
19 * Crypto safe pseudo-random value generation
20 */
21 class Random
22 {
23 /**
24 * Generates cryptographic secure pseudo-random bytes
25 *
26 * @param int $length
27 * @return string
28 */
29 public function generateRandomBytes(int $length): string
30 {
31 return random_bytes($length);
32 }
33
34 /**
35 * Generates cryptographic secure pseudo-random integers
36 *
37 * @param int $min
38 * @param int $max
39 * @return int
40 */
41 public function generateRandomInteger(int $min, int $max): int
42 {
43 return random_int($min, $max);
44 }
45
46 /**
47 * Generates cryptographic secure pseudo-random hex string
48 *
49 * @param int $length
50 * @return string
51 */
52 public function generateRandomHexString(int $length): string
53 {
54 return substr(bin2hex($this->generateRandomBytes((int)(($length + 1) / 2))), 0, $length);
55 }
56 }