Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - Algoritmo che genera n stringhe casuali di lunghezza fissa PHP
Forum - Altri Linguaggi - Algoritmo che genera n stringhe casuali di lunghezza fissa PHP

Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 18:45
Venerdì, 30/09/2011
Salve ragazzi vorrei realizzare un algortitmo in PHP che mi restituisce n stringhe diverse tra loro di lunghezza fissa, in base alle possibili combinazioni della data stringa in ingresso. Ad esempio se i caratteri disponibili sono ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_-, le possibili combinazioni saranno (supponiamo che la lunghezza della stringa in output sia 3):

Ab0
Bc3
A0b
....

Come posso implementarlo questo algoritmo? Ci sono riuscito fino alla creazione della stringa in base ai caratteri disponibili, ma poi non saprei come continuare 8-|

Codice sorgente - presumibilmente Altri Linguaggi

  1. // genera una stringa casuale della lunghezza desiderata
  2. function PasswordCasuale($lunghezza=3){
  3.  
  4.         //$caratteri_disponibili ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
  5.         $caratteri_disponibili ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_-";
  6.         $password = "";
  7.         for($i = 0; $i<$lunghezza; $i++){
  8.                 $password = $password.substr($caratteri_disponibili,rand(0,strlen($caratteri_disponibili)-1),1);
  9.         }
  10.         return $password;
  11. }
  12.  
  13. // genera una stringa casuale di 3 caratteri
  14. $random_string = PasswordCasuale($lunghezza=3);
  15.  
  16. echo "$random_string <br />";



Ringranzio tutti anticipatamente.

PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
1
Down
V
Segnala al moderatore
Postato alle 18:50
Venerdì, 30/09/2011
Potresti usare un array con i caratteri disponibili :yup:

Ultima modifica effettuata da il 30/09/2011 alle 18:51
ma io i caratteri disponibili li ho già dichiarati ... vorrei solo la stampa di tutte le n combinazioni di lunghezza fissa - giocala88 - 30/09/11 19:01
mi sa che tutte le N combinazioni sono tantucce XD - HeDo - 30/09/11 19:24
setto puzza di bruteforce... - TheKaneB - 30/09/11 20:55
mi scuso per aver sbagliato a postere in questa sezione ... cmq non si tratta di un brute forse, ma semplicemente di un generatore di password casuale ed assegnamento statico delle stesse agli utenti che si registrano al mio sito futuro ;) - giocala88 - 01/10/11 09:15
PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
1
Down
V
Segnala al moderatore
Postato alle 19:42
Venerdì, 30/09/2011
Prova così
Codice sorgente - presumibilmente Altri Linguaggi

  1. <?php
  2.     // genera una stringa casuale della lunghezza desiderata
  3.     function PasswordCasuale($lunghezza=3){
  4.      
  5.             //$caratteri_disponibili ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
  6.             $caratteri_disponibili ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_-";
  7.             $password="";
  8.             $array;
  9.             for($x=0; $x < 21; $x++){
  10.               $password = "";
  11.               for($i = 0; $i<$lunghezza; $i++){
  12.                     $password = $password.substr($caratteri_disponibili,rand(0,strlen($caratteri_disponibili)-1),1);
  13.                  }
  14.            
  15.              $array[$x] = $password;
  16.             }
  17.             for($x=0; $x < 21; $x++){
  18.               print "$array[$x]\n";
  19.             }
  20.     }
  21.      
  22.     // genera una stringa casuale di 3 caratteri
  23.     PasswordCasuale($lunghezza=3);
  24.      
  25.     ?>



L'ho fatto moooolto di fretta...



Edit:

prova con questo quì
Codice sorgente - presumibilmente Altri Linguaggi

  1. <?php
  2.     // genera una stringa casuale della lunghezza desiderata
  3.     function PasswordCasuale($lunghezza){
  4.      
  5.             //$caratteri_disponibili ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
  6.             $caratteri_disponibili ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_-";
  7.             $len = strlen($caratteri_disponibili);
  8.             $tot = (int)(($len / $lunghezza)*$len);  //mi calcolo le combinazioni ed effettuo un cast
  9.             $password; //variabile che conterrà la stringa casuale
  10.             $array;
  11.            
  12.             for($x=0; $x < $tot; $x++){
  13.              
  14.               $password = "";
  15.              
  16.               for($i = 0; $i<$lunghezza; $i++){
  17.                
  18.                     $password = $password.substr($caratteri_disponibili,rand(0,strlen($caratteri_disponibili)-1),1);
  19.                  }
  20.            
  21.              $array[$x] = $password;
  22.              
  23.             }
  24.            
  25.             sort($array);//ordino l'array
  26.            
  27.             for($x=0; $x < $tot; $x++){
  28.              
  29.               print "$array[$x]\n";//stampo tutte le combinazioni.
  30.              
  31.             }
  32.            
  33.             print "$tot\n"; //Stampo il numero di  combinazioni effettuate
  34.      
  35.     }
  36.      
  37.     PasswordCasuale(3);
  38.      
  39.     ?>



Ciao :D

Ultima modifica effettuata da il 01/10/2011 alle 12:45
aaaaahhhhhhhhhhhh - HeDo - 01/10/11 00:46
innanzittuto ti ringranzio per la risposta, ma non è quello che cerco. Il tuo algoritmo produce una stringa casuale di 20 caratteri, io invece cerco le possibili combinazioni, in base ai caratteri dichiarati. L'algo deve quindi restituire n stringhe, che sarebbero le n combinazioni, di lunghezza 3 - giocala88 - 01/10/11 09:19
PM