Genera una stringa di testo veramente casuale con PHP? [duplicare]

-1

Come posso generare una stringa di testo casuale crittograficamente sicura in PHP (da usare come password)?

Consentito: a-z, A-Z, 0-9 Bloccato: Tutto il resto

    
posta Laurent 10.04.2017 - 20:37
fonte

3 risposte

2

I computer non sono molto bravi a generare una "vera" casualità - il solo PHP non ti darà questo. Ma puoi ottenere qualcosa che è abbastanza imprevedibile da utilizzare per la generazione di password.

Utilizza int random_int ( int $min , int $max ) . Utilizzerà un CSPRNG .

Come passare dall'essere in grado di generare interi casuali in un certo intervallo per generare una password casuale è una domanda di programmazione, e non una domanda di sicurezza. Quindi suggerirò a breve di creare una stringa di tutti i caratteri consentiti e di avere un ciclo for che preleva una lettera casuale da quella stringa alla volta.

    
risposta data 10.04.2017 - 22:25
fonte
-1

Direi che in informatica parlare di "stringhe di testo veramente casuali" non è così semplice.

Alcune cose che vorrei fare è usare la funzione rand e impostare le 26 lettere come 0- 25 e i 10 numeri come 26-35. Quindi se rand (0,35), se ottieni il 3 hai un d alla tua password, lo stesso se vuoi ottenere lettere maiuscole, li includi nella funzione rand ().

Si noti che questo è per ottenere elementi pseudocasuali, quindi se ognuno di questi elementi è "pseudocasuale" e si hanno abbastanza password grandi fatte in questo modo, è impossibile con la capacità di calcolo che abbiamo oggi, che alcuni computer potrebbero ottieni la tua password.

Penso che questo sia il modo più rapido per risolvere questo problema.

    
risposta data 10.04.2017 - 20:56
fonte
-1

Intendevi qualcosa di simile?

<?php

$alphabet = array('a','b','c','d','e','f','g','h','i','j','k','l','m','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9');
$random = array_rand($alphabet, 10); #set the length
foreach ($random as $letter) { echo $alphabet[$letter]; }

?>
    
risposta data 11.04.2017 - 00:29
fonte

Leggi altre domande sui tag