Foro de elhacker.net

Programación => Java => Mensaje iniciado por: udlea2014 en 4 Julio 2014, 03:34 am



Título: Un ejercicio de pasword! espero le sirva lo hize yo
Publicado por: udlea2014 en 4 Julio 2014, 03:34 am
/*
clase llamada Password:
   atributos longitud y contraseña . Por defecto,
   longitud =8.
    Los constructores:
    Un constructor por defecto.
    Un constructor con la longitud que nosotros le pasemos.
   Generara una contraseña aleatoria con esa longitud.
    Los métodos:
        esFuerte(): devuelve un booleano si es fuerte o no, para que sea
      fuerte debe tener mas de 2 mayúsculas, mas de 1 minúscula y mas de 5 números.
        generarPassword():  genera la contraseña del objeto con la longitud que tenga.
        Método get para contraseña y longitud.
        Método set para longitud.
clase clase ejecutable:
    Crea un array de Passwords con el tamaño que tu le indiques por teclado.
    Crea un bucle que cree un objeto para cada posición del array.
    Indica también por teclado la longitud de los Passwords (antes de bucle).
    Crea otro array de booleanos donde se almacene si el password del array
   de Password es o no fuerte (usa el bucle anterior).
    Al final, muestra la contraseña y si es o no fuerte (usa el bucle anterior).
   Usa este simple formato:

contraseña1 valor_booleano1

contraseña2 valor_bololeano2
*/
import java.util.*;

public class Password{
   private int longitud;
   private String contrasenia;
   private final int LONG_DEFUAULT=8;
   private char [] abecedarioMayusculas = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
   'K', 'L', 'M','N','O','P','Q','R','S','T','U','V','W', 'X','Y','Z'};
   private char [] abecedarioMinusculas ={'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
   'k', 'l', 'm','n','o','p','q','r','s','t','u','v','w', 'x','y','z'};
   private char[] numeros={'0','1','2','3','4','5','6','7','8','9'};
   
   //constructores
   public Password(){
      this.longitud=LONG_DEFUAULT;
      this.contrasenia=contrasenia;
   }
   public Password(int longitud){
      this.longitud=longitud;
      this.contrasenia=generarPassword(longitud);
   }
   //getting
   public int getLongitud(){
      return this.longitud;
   }
   public String getContrasenia(){
      return this.contrasenia;
   }
   //setting
   public void setLongitud(int longitud){
      this.longitud=longitud;
   }
   public void setContrasenia(String contrasenia){
      this.contrasenia=contrasenia;
   }
   
   public String generarPassword(int longitud){
      int aleatorio,aleatorio1;
      int contMinusculas=0;
      int contMayusculas=0;
      int contNumeros=0;
      int cont=0;
      int i=0;
      int longitudMayusculas=(longitud*3/11);
      int longitudNumeros=(longitud*6/11);
      int longitudMinusculas=(longitud-longitudMayusculas-longitudNumeros);
      StringBuilder str=new StringBuilder();
      Random rnd=new Random();
      
      while(longitud>cont){
         aleatorio=(int)(rnd.nextDouble()*3);
         if(aleatorio==0 && contMinusculas<longitudMinusculas){
            aleatorio1=(int) (rnd.nextDouble()*(abecedarioMinusculas.length-1));
            str.append(abecedarioMinusculas[aleatorio1]);
            cont++;
            contMinusculas++;
         }
         if(aleatorio==1 && contMayusculas<longitudMayusculas){
            aleatorio1=(int) (rnd.nextDouble()*(abecedarioMayusculas.length-1));
            str.append(abecedarioMayusculas[aleatorio1]);
            cont++;
            contMayusculas++;
         }
         if(aleatorio==2 && contNumeros<longitudNumeros){
            aleatorio1=(int) (rnd.nextDouble()*9+0);
            str.append(aleatorio1);
            cont++;
            contNumeros++;
         }
         
      }
      return str.toString();
   }
   public boolean isEsFuerte(String contrasenia){
      char comparar;
      boolean encontrado=false;
      boolean cond=false;
      int contNumeros=0;
      int contMayus=0;
      int contMinus=0;
      int k=0;
      for(int i=0; i<this.longitud ;i++){
         comparar=contrasenia.charAt(i);
         k=0;
         encontrado=false;
         while(!(k==(26-1)) && !(comparar==(abecedarioMayusculas[k]))){
            k++;
         }
         if(comparar==(abecedarioMayusculas[k])){
            contMayus++;
            encontrado=true;
         }
         
         k=0;
         while(encontrado==false && !(k==(26-1)) && !(comparar==(abecedarioMinusculas[k]))){
            k++;
         }
         if(comparar==(abecedarioMinusculas[k])){
            contMinus++;
            encontrado=true;
         }
         k=0;
         while(encontrado==false && !(k==(10-1)) && !(comparar==(numeros[k]))){
            k++;
         }
         if(comparar==(numeros[k])){
            contNumeros++;
         }
      }
      if(contMinus>1 && contMayus>2 && contNumeros>5){
         cond=true;
      }
   
   return cond;
   }
   
   
}

//@udlea2014

import java.util.*;

public class Ejecutable{
   public static void main(String[]args){
      int numeroDePass;
      Scanner tec=new Scanner(System.in);
      System.out.println("Ingrese el numero de contraseñas a construir");
      numeroDePass=tec.nextInt();
      Password pass[]=new Password[numeroDePass];
      String cond,fuerte;
      int longitud;
   
      for(int i=0;i<numeroDePass;i++){
         System.out.println("Desea ingresar la longitud de la contraseña? ");
         cond=tec.next();
         if(cond.toLowerCase().equals("si")){
            System.out.println("Ingrese su longitud y se creara automaticamente su contraseña ");
            longitud=tec.nextInt();
            pass=new Password(longitud);
            
         }else{
            pass=new Password();
            System.out.println("Escriba su contraseña de  8 caracteres:");
            pass.setContrasenia(tec.next());
         }
      }
      for(int i=0;i<numeroDePass;i++){
         if(pass.isEsFuerte(pass.getContrasenia())==true){
            fuerte="fuerte!";
            
         }else{
            fuerte="debil";
         }
         
         System.out.println("la contraseña Nº: "+(i+1)+" es igual a: "+pass.getContrasenia()+" "+" " +fuerte);
         
      }
      
   
   }

}


//@udlea2014



Título: Re: Un ejercicio de pasword! espero le sirva lo hize yo
Publicado por: engel lex en 4 Julio 2014, 03:44 am
leete las reglas...

cuando publiques codigo usa las etiquetas GeSHi para que sea legible, están arriba de los emoticones a la derecha