Validar contraseña en Java
Waleed
12 octubre 2023
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
c
de tipo char. - El tipo de datos de caracteres tiene una función predeterminada
isUpperCase
,isLowerCase
yisDigit
. 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
digitCounter
en 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