1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-03-24 09:30:34 +01:00

Merge pull request #5292 from rubencm/ticket/15723

[ticket/15723] Rewrite gen_rand_string() and gen_rand_string_friendly()
This commit is contained in:
Marc Alexander 2018-09-17 21:01:45 +02:00
commit 9000936926
No known key found for this signature in database
GPG Key ID: 50E0D2423696F995

View File

@ -73,8 +73,17 @@ function set_var(&$result, $var, $type, $multibyte = false)
*/
function gen_rand_string($num_chars = 8)
{
// [a, z] + [0, 9] = 36
return substr(strtoupper(base_convert(bin2hex(random_bytes($num_chars + 1)), 16, 36)), 0, $num_chars);
$range = array_merge(range('A', 'Z'), range(0, 9));
$size = count($range);
$output = '';
for ($i = 0; $i < $num_chars; $i++)
{
$rand = random_int(0, $size-1);
$output .= $range[$rand];
}
return $output;
}
/**
@ -88,13 +97,17 @@ function gen_rand_string($num_chars = 8)
*/
function gen_rand_string_friendly($num_chars = 8)
{
$rand_str = bin2hex(random_bytes($num_chars + 1));
$range = array_merge(range('A', 'N'), range('P', 'Z'), range(1, 9));
$size = count($range);
// Remove Z and Y from the base_convert(), replace 0 with Z and O with Y
// [a, z] + [0, 9] - {z, y} = [a, z] + [0, 9] - {0, o} = 34
$rand_str = str_replace(array('0', 'O'), array('Z', 'Y'), strtoupper(base_convert($rand_str, 16, 34)));
$output = '';
for ($i = 0; $i < $num_chars; $i++)
{
$rand = random_int(0, $size-1);
$output .= $range[$rand];
}
return substr($rand_str, 0, $num_chars);
return $output;
}
/**
@ -102,7 +115,7 @@ function gen_rand_string_friendly($num_chars = 8)
*/
function unique_id()
{
return bin2hex(random_bytes(8));
return gen_rand_string(32);
}
/**