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!