Validar contraseña en Java
    
    
            Waleed
    12 octubre 2023
    
    Java
    Java Password Validation
    
 
Al crear una página de inicio de sesión, a menudo tenemos que validar la contraseña y verificar si sigue el estándar adecuado o no.
La validación de la contraseña incluyó verificar si la contraseña es correcta o no de acuerdo con la política de contraseñas que se analiza a continuación:
- Una contraseña estándar contiene al menos ocho caracteres
- Una contraseña normal contiene al menos dos letras mayúsculas
- Una contraseña estándar contiene dos letras minúsculas
- Una contraseña estándar incluye dos símbolos especiales
Algoritmo para validar contraseña en Java
- Antes de comprobar nuestra contraseña, debemos especificar cuántas mayúsculas, minúsculas, mayúsculas o dígitos debe contener una contraseña ideal. Para ello definimos las variables MAX, MIN_Uppercase, MIN_Lowercase, Num_Digits y Special de tipo int.
- Para contar cuántas mayúsculas, minúsculas, dígitos o caracteres especiales tiene nuestra contraseña, declararemos las variables uppercaseCounter, lowercaseCounter, special y digitCounter de tipo entero.
- Después de declarar las variables de contador, las inicializamos en 0. Al inicializar la variable de contador en 0, nos aseguramos de que no contengan ningún valor basura.
- Primero le pediremos al usuario que ingrese una contraseña para validar la contraseña dada. Para tomar la entrada del usuario, primero importamos la clase de escáner en nuestro programa y luego creamos un objeto. En nuestro objeto de programa del escáner, se ingresa la clase.
- La función de escáner tiene una función predeterminada de .nextLine()que lee la entrada del usuario y luego la almacena en una cadena.
- Luego iteramos todos los caracteres de la contraseña y almacenamos cada carácter en una variable cde tipo char.
- El tipo de datos de caracteres tiene una función predeterminada isUpperCase,isLowerCaseyisDigit. Usando estas funciones predeterminadas, calculamos cuántos caracteres en mayúsculas y minúsculas, símbolos especiales o números contiene nuestra contraseña.
- Si un carácter almacenado en la variable c está en mayúsculas, incrementamos la variable uppercaseCount en 1.
- Si un carácter almacenado en una variable c es minúscula, incrementamos la variable lowercaseCounter en 1.
- Si un carácter almacenado en c es un número, incrementamos la variable digitCounteren 1.
- Si un carácter almacenado en c es un símbolo especial, incrementamos un contador especial en 1.
- Después de hacer eso, ejecutamos la declaración condicional para verificar si nuestra contraseña contiene los caracteres especificados como @#%, letras minúsculas y mayúsculas, y dígitos o no.
- Si la contraseña cumple con nuestros criterios especificados, imprimiremos la declaración Validate password.
- En caso de que la contraseña no cumpla con todas o algunas de nuestras condiciones, primero mostramos la declaración Your password doesn't contain the following.
- Por último, comprobaremos qué condición(es) especificada(s) la contraseña no cumple y luego mostraremos el mensaje correspondiente.
package sampleProject;
import java.util.*;
import java.util.Scanner;
public class Codesample {
  public static void main(String[] args) {
    // Specify the maximum number of letters in a password
    final int MAX = 8;
    // Specifying the number of uppercase letters in password
    final int MIN_Uppercase = 2;
    // Specifying the minimum lowercase letters in password
    final int MIN_Lowercase = 2;
    // Specifying the number of digits in a password
    final int NUM_Digits = 2;
    // Specify the minimum number of special case letters
    final int Special = 2;
    // Count number of uppercase letters in a password
    int uppercaseCounter = 0;
    // Counter lowercase letters in a password
    int lowercaseCounter = 0;
    // Count digits in a password
    int digitCounter = 0;
    // count special case letters in a password
    int specialCounter = 0;
    // Take input of password from the user
    System.out.println("Enter the password\n");
    Scanner input = new Scanner(System.in);
    // Take password input from the user and save it in the string password
    String password = input.nextLine();
    for (int i = 0; i < password.length(); i++) {
      char c = password.charAt(i);
      if (Character.isUpperCase(c))
        uppercaseCounter++;
      else if (Character.isLowerCase(c))
        lowercaseCounter++;
      else if (Character.isDigit(c))
        digitCounter++;
      if (c >= 33 && c <= 46 || c == 64) {
        specialCounter++;
      }
    }
    if (password.length() >= MAX && uppercaseCounter >= MIN_Uppercase
        && lowercaseCounter >= MIN_Lowercase && digitCounter >= NUM_Digits
        && specialCounter >= Special) {
      System.out.println("Valid Password");
    } else {
      System.out.println("Your password does not contain the following:");
      if (password.length() < MAX)
        System.out.println(" atleast 8 characters");
      if (lowercaseCounter < MIN_Lowercase)
        System.out.println("Minimum lowercase letters");
      if (uppercaseCounter < MIN_Uppercase)
        System.out.println("Minimum uppercase letters");
      if (digitCounter < NUM_Digits)
        System.out.println("Minimum number of numeric digits");
      if (specialCounter < Special)
        System.out.println("Password should contain at lest 3 special characters");
    }
  }
}
Producción :
Your password does not contain the following:
At least 8 characters
Minimum lowercase letters
Minimum, uppercase letters
Minimum number of numeric digits
Password should contain at least 3 special characters
Enter the password
DElft@#90
Valid Password
        ¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete