Generacion de contraseñas (passwords)

En esta entrada, incluimos una clase con utilidades para generar contraseñas de todos los tipos posibles.

El mecanismo para generar las contraseñas es extraer aleatoriamente caracteres de la cadena que contiene los tipos posibles caracteres para la contraseña. Al método getPassword() se le puede suministrar tanto los tipos de caracteres posibles para la contraseña como la longitud deseada. Para facilitar la generación de las contraseñas más comunes, se han implementado un par de métodos, getPinNumber(), que genera una contraseña de 4 números, y getPassword(), que sin argumentos generan una contraseña de números y letras de longitud 8.

Si, por ejemplo, se quiere generar una contraseña de longitud 10 en la que se quieran incluir sólo letras y además las letras ñ y Ñ, se debería utilizar esta clase de la siguiente forma:

PasswordGenerator.getPassword(
		PasswordGenerator.MINUSCULAS+
		PasswordGenerator.MAYUSCULAS+
		PasswordGenerator.ESPECIALES,10);

La clase que genera las contraseñas es la siguiente

public class PasswordGenerator {
 
	public static String NUMEROS = "0123456789";
 
	public static String MAYUSCULAS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 
	public static String MINUSCULAS = "abcdefghijklmnopqrstuvwxyz";
 
	public static String ESPECIALES = "ñÑ";
 
	//
	public static String getPinNumber() {
		return getPassword(NUMEROS, 4);
	}
 
	public static String getPassword() {
		return getPassword(8);
	}
 
	public static String getPassword(int length) {
		return getPassword(NUMEROS + MAYUSCULAS + MINUSCULAS, length);
	}
 
	public static String getPassword(String key, int length) {
		String pswd = "";
 
		for (int i = 0; i < length; i++) {
			pswd+=(key.charAt((int)(Math.random() * key.length())));
		}
 
		return pswd;
	}
}

Deje una respuesta

Se debe registrar para escribir un comentario.