questa classe:
viene richiamata da alcune pagine jsp(col codice che segue) per creare una password:codice:import java.util.*; public class PwdGenerator { /** Creates a new instance of GeneratePwd */ public PwdGenerator() { } Random rnd = new Random(); public static void main(String arfgv[]) { PwdGenerator a = new PwdGenerator(); System.out.println(a.getPWD()); PwdGenerator a2 = new PwdGenerator(); System.out.println(a2.getPWD()); } public String getPWD() { //decido dimensione password int dim = 8;//rnd.nextInt(5); //dim = dim+6; //decido la quantità di cifre numeriche int num = rnd.nextInt(dim-4)+1; num= num+2; //decido la quantità di cifre alfa int alfa = dim-num; int appoggio=0; String pass=""; int alterna=0; int contnum=1; int contalfa=1; for (int i=1;i<=dim;i++) { alterna = rnd.nextInt(2); if (contalfa>alfa){alterna=0;} else{if (contnum>num) {alterna=1;} } if (alterna==1) {contalfa++; appoggio = rnd.nextInt(25); switch (appoggio) { case 0 : pass = pass+"A";break; case 1 : pass = pass+"B";break; case 2 : pass = pass+"C";break; case 3 : pass = pass+"D";break; case 4 : pass = pass+"E";break; case 5 : pass = pass+"F";break; case 6 : pass = pass+"G";break; case 7 : pass = pass+"H";break; case 8 : pass = pass+"I";break; case 9 : pass = pass+"J";break; case 10 : pass = pass+"K";break; case 11 : pass = pass+"L";break; case 12 : pass = pass+"M";break; case 13 : pass = pass+"N";break; case 14 : pass = pass+"O";break; case 15 : pass = pass+"P";break; case 16 : pass = pass+"Q";break; case 17 : pass = pass+"R";break; case 18 : pass = pass+"S";break; case 19 : pass = pass+"T";break; case 20 : pass = pass+"U";break; case 21 : pass = pass+"W";break; case 22 : pass = pass+"X";break; case 23 : pass = pass+"Y";break; case 24 : pass = pass+"Z";break; } } if (alterna==0) {contnum++; appoggio = rnd.nextInt(10); switch (appoggio) { case 0 : pass = pass+"0";break; case 1 : pass = pass+"1";break; case 2 : pass = pass+"2";break; case 3 : pass = pass+"3";break; case 4 : pass = pass+"4";break; case 5 : pass = pass+"5";break; case 6 : pass = pass+"6";break; case 7 : pass = pass+"7";break; case 8 : pass = pass+"8";break; case 9 : pass = pass+"9";break; } } } return pass; } }
PwdGenerator a = new PwdGenerator();
String pws =a.getPWD();
Io penso che se la pagina che contiene la creazione della password viene richiamata contemporaneamente da 2 utenti(unpo' come avviene nel main che ho mostrato) le password generate sono uguali(per via delle caratteristiche della classe Random )
La mia paura è fondata o si tratta di un'ipotesi semimpossibile?
Come si puo' rimediare?
ciao grazie

Rispondi quotando

