PHP 7 - CSPRNG
No PHP 7, a seguir, duas novas funções são introduzidas para gerar inteiros e strings criptograficamente seguros em uma plataforma cruzada.
random_bytes() - Gera bytes pseudo-aleatórios criptograficamente seguros.
random_int() - Gera inteiros pseudo-aleatórios criptograficamente seguros.
random_bytes ()
random_bytes () gera uma string de comprimento arbitrário de bytes criptográficos aleatórios que são adequados para uso criptográfico, como ao gerar sais, chaves ou vetores de inicialização.
Sintaxe
string random_bytes ( int $length )
Parâmetros
length - O comprimento da string aleatória que deve ser retornada em bytes.
Valores Retornados
Retorna uma string contendo o número solicitado de bytes aleatórios criptograficamente seguros.
Erros / exceções
Se uma fonte apropriada de aleatoriedade não puder ser encontrada, uma exceção será lançada.
Se parâmetros inválidos forem fornecidos, um TypeError será lançado.
Se um comprimento inválido de bytes for fornecido, um erro será lançado.
Exemplo
<?php
$bytes = random_bytes(5);
print(bin2hex($bytes));
?>
Ele produz a seguinte saída do navegador -
54cc305593
random_int ()
random_int() gera inteiros criptográficos aleatórios que são adequados para uso onde os resultados imparciais são críticos.
Sintaxe
int random_int ( int $min , int $max )
Parâmetros
min - O menor valor a ser retornado, que deve ser PHP_INT_MIN ou mais alto.
max - O maior valor a ser retornado, que deve ser menor ou igual a PHP_INT_MAX.
Valores Retornados
Retorna um inteiro aleatório criptograficamente seguro no intervalo mínimo a máximo, inclusive.
Erros / exceções
Se uma fonte apropriada de aleatoriedade não puder ser encontrada, um Exception será lançado.
Se parâmetros inválidos forem fornecidos, um TypeError será lançado.
Se max for menor que min, um Error será lançado.
Exemplo
<?php
print(random_int(100, 999));
print("");
print(random_int(-1000, 0));
?>
Ele produz a seguinte saída do navegador -
614
-882