Categorie
Tutorial Utilities

Generare password random in Java

Spesso capita di dover generare randomicamente una password per consentire il primo accesso di un utente ad un dato servizio. In Java le soluzioni sono molte, a partire dalla classe RandomStringUtils di Apache fino a soluzioni che passano attraverso la classe UUID o le classi del package digest. Benchè largamente non richiesta ho deciso di fornire anche io la mia personale soluzione al problema, che rispetto ad altre ha il vantaggio di non richiedere librerie di terze parti, essere estramente leggera e fornire un controllo assoluto sul charset dei caratteri ammessi (e volendo sulla probabilità che ogni carattere ha di essere presente rispetto ad altri).


import java.util.Random;

/**
 *
 * @author Luca Adamo - info@elbuild.it
 * 2012 ELbuild - Web development and more..
 *
 */
public class RandomPassword {

    static final String ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    static Random rnd = new Random(System.currentTimeMillis());
    static private final int LENGHT = 8;

    public static String generate() {
        StringBuilder sb = new StringBuilder(LENGHT);
        for (int i = 0; i < LENGHT; i++) {
            sb.append(ALPHABET.charAt(rnd.nextInt(ALPHABET.length())));
        }
        return sb.toString();
    }
}

La classe che ho velocemente scritto ha un singolo metodo statico che consente di generare password di lunghezza LENGHT formate da caratteri randomici estratti dal charset ALPHABET. Modificare il codice è alla portata di chiunque, non sto nemmeno a commentare, buon copiaincolla!

Di Luca Adamo

Luca Adamo si è laureato con lode in Ingegneria delle Telecomunicazioni all'Università degli studi di Firenze ed è dottorando in Ingegneria Informatica, Multimedialità e Telecomunicazioni, sempre nella stessa facoltà. Le sue competenze tecniche includono lo sviluppo software, sia orientato al web che desktop, in C/C++ e Java (J2EE, J2SE, J2ME), l'amministrazione di macchine Unix-based, la gestione di reti di telecomunicazioni, ed il design di database relazionali.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.