Foros del Web » Programación para mayores de 30 ;) » Java »

ayudaa

Estas en el tema de ayudaa en el foro de Java en Foros del Web. Soi nuevo en java y me hicieron crear una aplicacion, he intentado varias formas pero no me resulta. Lo que debo hacer es crear un ...
  #1 (permalink)  
Antiguo 30/04/2009, 01:58
 
Fecha de Ingreso: abril-2009
Mensajes: 12
Antigüedad: 15 años
Puntos: 0
ayudaa

Soi nuevo en java y me hicieron crear una aplicacion, he intentado varias formas pero no me resulta.

Lo que debo hacer es crear un programa que permita indicar el nivel de seguridad de una contraseña ingresada. La contraseña debe tener mínimo 6 caracteres y máximo 10, se distingue entre mayúsculas y minúsculas. Se pueden ocupar otros caracteres (& / $ )

Niveles de seguridad:

BAJO: si la contraseña tiene los caracteres del mismo tipo, es decir todos son números o todos son letras en mayúsculas o todos son letras en minúsculas, o si se ocupan solamente 6 caracteres independiente los caracteres utilizados.

MEDIO: si hay caracteres del mismo tipo pero en mayúscula y minúscula, si hay mezcla de caracteres utilizando entre 7 y 9 caracteres.

ALTO: si hay más de 6 caracteres donde se utilizan mezcla de caracteres numéricos, alfabéticos (mayúscula y minúscula) y otros caracteres.

si alguien puede ayudarme o mostrarme algun ejemplo le estere agradecido

saludos..
  #2 (permalink)  
Antiguo 30/04/2009, 03:37
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 2 meses
Puntos: 17
Respuesta: ayudaa

Hola, con las funciones de String y char lo tienes todo.

En primer lugar tienes que coger el string y ver su longitud, con length, luego, deberías dividir el string en chars y crear un array con charAt, y luego, ir recorriendo el array con

isDigit //ves si es un número
isLowerCase // ves si es mayúscula

... y así creas tus casos

ESpero que te sea útil. Saludos
  #3 (permalink)  
Antiguo 30/04/2009, 06:56
 
Fecha de Ingreso: noviembre-2008
Mensajes: 115
Antigüedad: 15 años, 6 meses
Puntos: 4
Respuesta: ayudaa

A ver si te sirve esto. Creo que he comprobado todos los casos.

Código:
    public static int nivelPassword(String password) throws Exception{
        int NIVEL_BAJO = 0;
        int NIVEL_MEDIO = 1;
        int NIVEL_ALTO = 2;

        int size = password.length();

        String minusculas = "abcdefghijklmnopqrstuvwxyz";
        String mayusculas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        String numeros = "0123456789";
        String caracteresEspeciales = "@!¡#$%&/()=?¿<>-{}[]+*|\\";

        boolean empiezaMinusculas = false;
        boolean empiezaMayusculas = false;
        boolean empiezaNumero = false;
        boolean empiezaCarater = false;

        boolean minusculasMayusculas = false;
        boolean minusculasNumeros = false;
        boolean mayusculasNumeros = false;

        boolean variedadSimbolos = false;

        //Primero comprueba la longitud. No importa que sean mayusculas o minusculas
        if(size<7 || size>10)
            throw new Exception("El tamaño tiene que estar entre 6 y 10");

        //Comprobamos si el primer caracter es un numero, minuscula o mayuscula o caracter especial
        
        if(!(minusculas.indexOf(password.charAt(0))<0))
            empiezaMinusculas = true;
        if(!(mayusculas.indexOf(password.charAt(0))<0))
            empiezaMayusculas = true;
        if(!(numeros.indexOf(password.charAt(0))<0))
            empiezaNumero = true;
        if(!(caracteresEspeciales.indexOf(password.charAt(0))<0))
            empiezaCarater = true;

        //Si empieza por un caracter raro, ya no hace falta saber mas
        if(empiezaCarater)
            return NIVEL_ALTO;

        //Una vez que sabemos por que empieza, comprobamos si todos son iguales
        if(empiezaMinusculas){
            for(int i=0;i<size;i++){
                //Si tiene minusculas y mayusculas
                if(!(mayusculas.indexOf(password.charAt(i))<0)){
                    minusculasMayusculas = true;
                }
                //Si tiene minusculas y numeros
                if(!(numeros.indexOf(password.charAt(i))<0)){
                    minusculasNumeros = true;
                }
            }
        }
        if(empiezaMayusculas){
            for(int i=0;i<size;i++){
                //Si tiene mayusculas y minusculas
                if(!(minusculas.indexOf(password.charAt(i))<0)){
                    minusculasMayusculas = true;
                }
                //Si tiene mayusculas y numeros
                if(!(numeros.indexOf(password.charAt(i))<0)){
                    mayusculasNumeros = true;
                }
            }
        }
        if(empiezaNumero){
            for(int i=0;i<size;i++){
                //Si tiene numeros y minusculas
                if(!(minusculas.indexOf(password.charAt(i))<0)){
                    minusculasNumeros = true;
                }
                //Si tiene numeros y mayusculas
                if(!(mayusculas.indexOf(password.charAt(i))<0)){
                    mayusculasNumeros = true;
                }

            }
        }

        //Ya sabes si tienes una mezcla de numeros y letras mayusculas o minusculas
        //Si hay mezcla, alguno sera true, si no es BAJO
        if(!mayusculasNumeros && !minusculasMayusculas && !minusculasNumeros)
            return NIVEL_BAJO;
        else{
            //Coprobamos si hay algun caracter raro
            for(int i=0;i<size;i++){
                if(caracteresEspeciales.indexOf(password.charAt(i))>0){
                    variedadSimbolos = true;
                }
            }
            //Si lo hay es ALTO
            if(variedadSimbolos)
                return NIVEL_ALTO;
            //Si no MEDIO
            else                
                return NIVEL_MEDIO;
        }
    }
Comprueba el array de caracteres especiales, que a lo mejor se me paso alguno

Entretenido ejercicio.
  #4 (permalink)  
Antiguo 04/05/2009, 04:57
 
Fecha de Ingreso: abril-2009
Mensajes: 12
Antigüedad: 15 años
Puntos: 0
Respuesta: ayudaa

Gracias muchachos por la ayuda esta bastante bueno... agradecido
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:06.