elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Un ejercicio de pasword! espero le sirva lo hize yo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Un ejercicio de pasword! espero le sirva lo hize yo  (Leído 9,829 veces)
udlea2014

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Un ejercicio de pasword! espero le sirva lo hize yo
« 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



En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Un ejercicio de pasword! espero le sirva lo hize yo
« Respuesta #1 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


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
(Ayuda) Me hize un lío con esto
Programación Visual Basic
Inmort 2 2,347 Último mensaje 15 Abril 2009, 15:40 pm
por Inmort
Caracteres especiales en BATCH (espero les sirva)
Scripting
<ИΘZIЭ(ŦB> 5 17,401 Último mensaje 21 Octubre 2009, 17:35 pm
por flony
Espero que me Ayuden con el ejercicio de la shell bash (Linux)
GNU/Linux
HackingLikor 1 2,037 Último mensaje 15 Marzo 2016, 22:54 pm
por sodark
una consulta este ejercicio como se hace espero su respuesta
Programación C/C++
FERNANDOXD 3 2,628 Último mensaje 10 Noviembre 2019, 04:11 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines