efrei/programmation-c-cpp/tp3/creation-mot-de-passe.c

129 lines
3.3 KiB
C
Raw Normal View History

2021-11-14 23:15:05 +01:00
/* Création d'un mot de passe */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
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;
}