/* Création d'un mot de passe */ #include #include #include void creer_mot_de_passe(char*); int verifier_proprietes_mot_de_passe(char*); int verifier_majuscule(char*); int verifier_caractere_special(char*); int verifier_chiffre(char*); int comparer_mot_de_passes(char*, char*); int main() { char mot_de_passe_1[100]; char mot_de_passe_2[100]; while (1) { printf("Entrez un nouveau mot de passe : "); creer_mot_de_passe(mot_de_passe_1); if (!verifier_proprietes_mot_de_passe(mot_de_passe_1)) { continue; } printf("Confirmez le mot de passe : "); creer_mot_de_passe(mot_de_passe_2); if (comparer_mot_de_passes(mot_de_passe_1, mot_de_passe_2)) { printf("Mot de passe changé !\n"); break; } else { printf("Les mots de passe ne sont pas identiques !\n"); } } return 0; } void creer_mot_de_passe(char *mot_de_passe) { int i = 0; fgets(mot_de_passe, 101, stdin); while (mot_de_passe[i] != '\n') i++; mot_de_passe[i] = '\0'; } int verifier_proprietes_mot_de_passe(char *mot_de_passe) { int mot_de_passe_ok = 1; if (!verifier_majuscule(mot_de_passe)) { printf("Le mot de passe doit contenir au moins une majuscule !\n"); mot_de_passe_ok = 0; } if (!verifier_caractere_special(mot_de_passe)) { printf("Le mot de passe doit contenir au moins un caractère spécial !\n"); mot_de_passe_ok = 0; } if (!verifier_chiffre(mot_de_passe)) { printf("Le mot de passe doit contenir au moins un chiffre !\n"); mot_de_passe_ok = 0; } if ((strlen(mot_de_passe) < 5) || (strlen(mot_de_passe) > 8)) { printf("Le mot de passe doit faire entre 5 et 8 caractères !\n"); mot_de_passe_ok = 0; } return mot_de_passe_ok; } int verifier_majuscule(char *mot_de_passe) { int majuscule_found = 0; for (int i = 0; i < strlen(mot_de_passe); i++) { if ((mot_de_passe[i] >= 65) && (mot_de_passe[i] <= 90)) { majuscule_found = 1; break; } } return majuscule_found; } int verifier_caractere_special(char *mot_de_passe) { int caractere_special_found = 0; for (int i = 0; i < strlen(mot_de_passe); i++) { if ( ((mot_de_passe[i] >= 32) && (mot_de_passe[i] <= 47)) || ((mot_de_passe[i] >= 58) && (mot_de_passe[i] <= 64)) || ((mot_de_passe[i] >= 91) && (mot_de_passe[i] <= 96)) || ((mot_de_passe[i] >= 123) && (mot_de_passe[i] <= 126)) ) { caractere_special_found = 1; break; } } return caractere_special_found; } int verifier_chiffre(char *mot_de_passe) { int chiffre_found = 0; for (int i = 0; i < strlen(mot_de_passe); i++) { if ((mot_de_passe[i] >= 48) && (mot_de_passe[i] <= 57)) { chiffre_found = 1; break; } } return chiffre_found; } int comparer_mot_de_passes(char *mot_de_passe_1, char *mot_de_passe_2) { if (strlen(mot_de_passe_1) != strlen(mot_de_passe_2)) { return 0; } for (int i = 0; i < strlen(mot_de_passe_1); i++) { if (mot_de_passe_1[i] != mot_de_passe_2[i]) { return 0; } } return 1; }