Valider le mot de passe en Java

Waleed 12 octobre 2023
Valider le mot de passe en Java

Lors de la création d’une page de connexion, nous devons souvent valider le mot de passe et vérifier s’il respecte ou non la bonne norme.
La validation du mot de passe comprenait la vérification du mot de passe s’il est correct ou non conformément à la politique de mot de passe décrite ci-dessous :

  1. Un mot de passe standard contient au moins huit caractères
  2. Un mot de passe normal contient au moins deux lettres majuscules
  3. Un mot de passe standard contient deux lettres minuscules
  4. Un mot de passe standard comprend deux symboles spéciaux

Algorithme pour valider le mot de passe en Java

  1. Avant de vérifier notre mot de passe, nous devons spécifier le nombre de lettres majuscules, minuscules, cas spéciaux ou chiffres qu’un mot de passe idéal doit contenir. Pour cela, nous définissons les variables MAX, MIN_Uppercase, MIN_Lowercase, Num_Digits et Special de type int.
  2. Pour compter le nombre de majuscules, minuscules, chiffres ou caractères spéciaux de notre mot de passe, nous allons déclarer les variables uppercaseCounter, lowercaseCounter, special et digitCounter de type entier.
  3. Après avoir déclaré les variables de compteur, nous les initialisons par 0. En initialisant la variable de compteur par 0, nous nous assurons qu’elles ne contiennent aucune valeur inutile.
  4. Nous allons d’abord demander à l’utilisateur d’entrer un mot de passe pour valider le mot de passe donné. Pour prendre l’entrée de l’utilisateur, nous importons d’abord la classe scanner dans notre programme, puis créons un objet. Dans notre objet programme du scanner, la classe est entrée.
  5. La fonction scanner a une fonction par défaut de .nextLine() qui lit les entrées de l’utilisateur, puis les stocke dans une chaîne.
  6. Nous itérons ensuite tous les caractères du mot de passe et stockons chaque caractère dans une variable c de type char.
  7. Le type de données caractère a une fonction par défaut isUpperCase, isLowerCase et isDigit. À l’aide de ces fonctions par défaut, nous calculons le nombre de caractères majuscules et minuscules, de symboles spéciaux ou de chiffres que contient notre mot de passe.
  8. Si un caractère stocké dans la variable c est en majuscule, nous incrémentons la variable uppercaseCount de 1.
  9. Si un caractère stocké dans une variable c est en minuscule, nous incrémentons la variable lowercaseCounter de 1.
  10. Si un caractère stocké dans c est un nombre, on incrémente la variable digitCounter de 1.
  11. Si un caractère stocké dans c est un symbole spécial, nous incrémentons un compteur spécial de 1.
  12. Après cela, nous exécutons l’instruction conditionnelle pour vérifier si notre mot de passe contient les caractères spécifiés comme @#%, des lettres minuscules et majuscules et des chiffres ou non.
  13. Si le mot de passe répond à nos critères spécifiés, nous imprimerons la déclaration Validate password.
  14. Si le mot de passe ne remplit pas tout ou partie de nos conditions, nous affichons d’abord la déclaration Your password doesn't contain the following.
  15. Enfin, nous vérifierons ce que le mot de passe de la ou des conditions spécifiées ne remplit pas, puis afficherons le message en conséquence.
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");
    }
  }
}

Production :

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