Validar contraseña en Java

Waleed 12 octubre 2023
Validar contraseña en Java

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:

  1. Una contraseña estándar contiene al menos ocho caracteres
  2. Una contraseña normal contiene al menos dos letras mayúsculas
  3. Una contraseña estándar contiene dos letras minúsculas
  4. Una contraseña estándar incluye dos símbolos especiales

Algoritmo para validar contraseña en Java

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Luego iteramos todos los caracteres de la contraseña y almacenamos cada carácter en una variable c de tipo char.
  7. El tipo de datos de caracteres tiene una función predeterminada isUpperCase, isLowerCase y isDigit. Usando estas funciones predeterminadas, calculamos cuántos caracteres en mayúsculas y minúsculas, símbolos especiales o números contiene nuestra contraseña.
  8. Si un carácter almacenado en la variable c está en mayúsculas, incrementamos la variable uppercaseCount en 1.
  9. Si un carácter almacenado en una variable c es minúscula, incrementamos la variable lowercaseCounter en 1.
  10. Si un carácter almacenado en c es un número, incrementamos la variable digitCounter en 1.
  11. Si un carácter almacenado en c es un símbolo especial, incrementamos un contador especial en 1.
  12. 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.
  13. Si la contraseña cumple con nuestros criterios especificados, imprimiremos la declaración Validate password.
  14. 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.
  15. 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