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;
|
|
|
|
|
2021-11-14 23:32:27 +01:00
|
|
|
fgets(mot_de_passe, 100, stdin);
|
2021-11-14 23:15:05 +01:00
|
|
|
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;
|
|
|
|
}
|