1/**
2 * Clase Password
3 *
4 * Contiene una contraseña y una longitud
5 *
6 * @author Fernando
7 * @version 1.0
8 */
9public class Password {
10
11 //Constantes
12
13 /**
14 * Longitud por defecto
15 */
16 private final static int LONG_DEF=8;
17
18 //Atributos
19
20 /**
21 * Longitud de la contraseña
22 */
23 private int longitud;
24 /**
25 * caracteres de la contraseña
26 */
27 private String contraseña;
28
29 //Metodos publicos
30
31 /**
32 * Devuelve la longitud
33 * @return longitud de la contraseña
34 */
35 public int getLongitud() {
36 return longitud;
37 }
38
39 /**
40 * Modifica la longitud de la contraseña
41 * @param longitud a cambiar
42 */
43 public void setLongitud(int longitud) {
44 this.longitud = longitud;
45 }
46
47 /**
48 * Devuelve la contraseña
49 * @return contraseña
50 */
51 public String getContraseña() {
52 return contraseña;
53 }
54
55 /**
56 * Genera una contraseña al azar con la longitud que este definida
57 * @return contraseña
58 */
59 public String generaPassword (){
60 String password="";
61 for (int i=0;i<longitud;i++){
62 //Generamos un numero aleatorio, segun este elige si añadir una minuscula, mayuscula o numero
63 int eleccion=((int)Math.floor(Math.random()*3+1));
64
65 if (eleccion==1){
66 char minusculas=(char)((int)Math.floor(Math.random()*(123-97)+97));
67 password+=minusculas;
68 }else{
69 if(eleccion==2){
70 char mayusculas=(char)((int)Math.floor(Math.random()*(91-65)+65));
71 password+=mayusculas;
72 }else{
73 char numeros=(char)((int)Math.floor(Math.random()*(58-48)+48));
74 password+=numeros;
75 }
76 }
77 }
78 return password;
79 }
80
81 /**
82 * Comprueba la fortaleza de la contraseña
83 * @return
84 */
85 public boolean esFuerte(){
86 int cuentanumeros=0;
87 int cuentaminusculas=0;
88 int cuentamayusculas=0;
89 //Vamos caracter a caracter y comprobamos que tipo de caracter es
90 for (int i=0;i<contraseña.length();i++){
91 if (contraseña.charAt(i)>=97 && contraseña.charAt(i)<=122){
92 cuentaminusculas+=1;
93 }else{
94 if (contraseña.charAt(i)>=65 && contraseña.charAt(i)<=90){
95 cuentamayusculas+=1;
96 }else{
97 cuentanumeros+=1;
98 }
99 }
100 }
101 //Si la constraseña tiene mas de 5 numeros, mas de 1 minuscula y mas de 2 mayusculas
102 if (cuentanumeros>=5 && cuentaminusculas>=1 && cuentamayusculas>=2){
103 return true;
104 }else{
105 return false;
106 }
107 }
108
109 //Constructores
110 /**
111 * Crea una contraseña al azar
112 */
113 public Password (){
114 this(LONG_DEF);
115 }
116
117 /**
118 * La contraseña sera la pasada por parametro
119 * @param longitud
120 */
121 public Password (int longitud){
122 this.longitud=longitud;
123 contraseña=generaPassword();
124 }
125}
126