Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [JAVA] Random String

  1. #1

    [java] Random String

    Salve ragazzi, provo a rifare una domanda che tempo fa feci e che nessuno mi rispose, proverò con altre parole forse saro stato incomprensibile.

    Ho la necessità di calcolare una stringa alfanumerica di 8 caratteri. Io ho provato a utilizzare il seguente codice:

    codice:
    java.util.Random r = new java.util.Random();
    for (i=0;i<8;i++)
    {
    	x = r.nextInt(3);   //genera un intero tra 0 e 2
    	if (x==0)  //genero un carattere casuale tra 'A' e 'Z'
    	{	
    		c = (char) ((int) 'A' + r.nextInt(26));
    		Codice = Codice + c;
    	}
    	else	
    		if (x==1)  //genero un numero casuale tra 0 e 9
    		{
    		        x = r.nextInt(10);
    			Codice = Codice + x;
    		}
    		else  //genero un carattere casuale tra 'a' e 'z'
    		{
    		        c = (char) ((int) 'a' + r.nextInt(26));
    			Codice = Codice + c;
    		}
    }
    In rete ho vista un nuovo metodo SecureRandom(), qual'è la differenza con il Random che ho utilizzato??
    Pensate che vada bene il modo in cui ho calcolato la stringa??

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Ho adattato del codice con cui genero stringhe casuali per SecureRandom (che non conoscevo). Il mio sistema tira in mezzo anche altri caratteri. Vedi un po' se lo trovi differente dal tuo (ossia se ti pare più vario o che ). Le stringhe con SR sono quelle sulla destra.

    codice:
    import java.util.*;
    import java.security.*;
    
    public class randomtest {
      static Random r;
      static SecureRandom sr;
      public static void main (String[] args) {
        r = new Random();
        sr = new SecureRandom();
        int length = 8;//lunghezza della password
        byte[] b = new byte[length]; 
        byte[] bs = new byte[length];
        
        
        for (int i=0; i < 100; i++) {
          r.nextBytes(b);
          sr.nextBytes(bs);
          for (int j=0; j < length; j++) {
            System.out.print((char)(((int)b[j]&0xFF)%76+48));
          }
          System.out.print("\t");
          for (int j=0; j < length; j++) {
            System.out.print((char)(((int)bs[j]&0xFF)%76+48));
          }
          System.out.print("\n------------------------\n");
        }
      }
    }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.