Programme de protection password crypté avec gestion du caractère ' * '

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 624 fois - Téléchargée 44 fois

Contenu du snippet

J'ai vu sur le site que plusieurs personnes proposent des programmes de
mot de passe.
Le problème c'est que la plupart du temps les mots de passes
apparaîssent en clair lorsqu'on ouvre le programme avec un éditeur hexaécimal.
J'ai donc développé un programme de mot de passe crypté
avec gestion du caractère '*' lors de la saisie du mot de passe.
Le premier programme consiste à choisir son mot de passe.
Celui-ci sera crypté par la méthode de cryptage de Cesar
puis stocker dans un fichier password.txt.
Le deuxième programme c'est le programme de protection.
L'utilisateur entre son mot de passe, le programme stock et crypte la saisie
de l'utilisateur et le compare à la chaîne de caractères du fichier password.
J'ai choisi comme algorithme de cryptage la méthode Cesar
pour commencer au tant faire simple.
PS: J'ai mis les deux sources sur la même page, donc n'oublier
pas de coller séparement le code de chaque programme dans 2 fichiers differents.

Source / Exemple :


/*****************************************/
/* Programme permettant à l'utilisateur de              */
/* définir son mot de passe                                      */
/* le mot de passe sera crypté et stocké dans le     */
/* fichier password.txt                                              */
/*                                                                              */
/* cryptage : Methode de Cesar                               */
/* Developpé par : Jarod1980                                  */
/*                                                                              */
/*****************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define LONG_MOT 100

void CESAR(char *, int cle); /* --- PROTOTYPE FONCTION CESAR --- */

int main(int argc, char *argv[])
{
 
 char passcheck[LONG_MOT];
 int cle;
 
 FILE *fichier;
 fichier=fopen("password.txt","wt");
 
 cle=15; /* clé de cryptage vous pouvez la changer à 
                  condition que : 1<cle<25 */  

 printf("\nEnter Password:");  /* choix de votre mot de passe */
 scanf("%s",&passcheck);  /* on le stock dans passcheck */  
 CESAR(passcheck,cle); /* on appel la fonction CESAR */
 fprintf(fichier,"%s\n",passcheck); /* on sauvegarde le password crypté 
                                              dans password.txt */
 fclose(fichier); /* on ferme le fichier */
 return 0;
}
void CESAR(char *mot, int cle) /* ---- DEFINITION Fonction Cesar ---- */
{
int i, n;
for (i=0;i<strlen(mot)-1;i++) 
{
mot[i] = tolower(mot[i]); /*CONVERSION en minuscule au cas où*/
if (mot[i] != 32) /*CHIFFREMENT des caracteres autres que ESPACE*/
{
n = mot[i]+cle; /*CONVERSION du Char mot[i] en Int */
if (n<=122) /*CHIFFREMENT de mot[]*/
{
mot[i] = n; /*AFFECTATION de Int n dans Char mot[i]*/
}
else
{
n = n - 26;
mot[i] = n; /*AFFECTATION de Int n dans Char mot[i]*/
}
}
else /*CHIFFREMENT de ESPACE en ESPACE*/
{
mot[i] = 32;
}
}
mot[strlen(mot)-1] = 0; /*AFFECTATION ('\0') (NULL) (Code 0) 
                                                 en fin de chaine*/
} 

-------------%<---------COUPER-----ICI-------%<------------COUPER-----ICI-----%<-------------------

/*******************************/
/* Programme de protection password*/ 
/* avec gestion du caractère '*' lors de*/ 
/* la saisie au clavier par l'utilisateur    */
/* de son mot de passe.                       */
/*                                                          */
/* Developpé par: Jarod1980               */
/*******************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define LONG_MOT 100

void CESAR(char *, int cle); /* --- PROTOTYPE FONCTION CESAR --- */

int main(int argc, char *argv[])
{
  char pass[LONG_MOT];
  char str[100];
  int cle;
  int num;
  FILE *fichier;
  fichier=fopen("password.txt","rb");

  cle=15;
  fscanf(fichier,"%s",&str); /* recupere la chaine de caractères 
                      ds fichier et on la stock dans str */
  fclose(fichier);     /* On ferme fichier */
  
  do {
  printf("\nEnter Password:");
  if (num !=100) {                                     
  num=0;                                              /*GESTION*/
  while((pass[num]=getch()) != 13) {    /*DU*/
  putchar('*');                                      /*CARACTERE*/
  num++;                                          /*ETOILE*/
  }}                                                           
  pass[num]='\0';                                      

  CESAR(pass,cle); /* On appel Cesar pour crypter la saisie */
  }
  while(strcmp (str,pass) != 0); /* On compare les 
                                              2 chaînes de caractères */
  printf("\n\nHello!");
  return 0;
}
void CESAR(char *mot, int cle) /* ---- DEFINITION Fonction Cesar ---- */
{
int i, n;
for (i=0;i<strlen(mot)-1;i++)
{
mot[i] = tolower(mot[i]); /*CONVERSION en minuscule au cas où*/
if (mot[i] != 32) /*CHIFFREMENT des caracteres autres que ESPACE*/
{
n = mot[i]+cle; /*CONVERSION du Char mot[i] en Int*/
if (n<=122) /*CHIFFREMENT de mot[]*/
{
mot[i] = n; /*AFFECTATION de Int n dans Char mot[i]*/
}
else
{
n = n - 26;
mot[i] = n; /*AFFECTATION de Int n dans Char mot[i]*/
}
}
else /*CHIFFREMENT de ESPACE en ESPACE*/
{
mot[i] = 32;
}
}
mot[strlen(mot)-1] = 0; /*AFFECTATION ('\0') (NULL) (Code 0) 
                                         en fin de chaine */
}

Conclusion :


Voila, le but maintenant c'est de mettre un algorithme un
peu plus balèze que la méthode de Cesar.
Si vous avez des idées ou des remarques n'hésiter
à me contacter.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
samedi 13 juin 2009
Statut
Membre
Dernière intervention
13 juin 2009

Pour utiliser le programme sous devc++, il faut parfois rajouter des includes suivant la version (#include (pour utiliser tolower) ; et #include <conio.h> (pour utiliser getch))
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
1
Le Xor est aussi une possibilté mais aussi facile à cracker que la méthode de cryptage que je propose dans ma source. Une autre solution serait de faire avec du md5. J'ai d'ailleurs fait une mise à jour de ma source mais je ne l'ai pas encore publiée.
Messages postés
165
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
24 octobre 2007

Pourquoi pas le cryptage XOR ? Très efficace aussi
Messages postés
101
Date d'inscription
vendredi 16 juillet 2004
Statut
Membre
Dernière intervention
31 octobre 2006

Moi j'aime bien ta source (merci de ne pas l'avoir mis dans un zip).
(nombreux commentaires ;-)).
Pour des debutants je trouve ce genre de source utile pour comprendre quelque chose au cryptage.
Et effectivement pour un mot de passe j'ai pas penser au cryptage!

Bonne continuation!

Uims
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
1
tolower est normalement reconnu avec Dev-C++. J'ai compilé mon code avec Dev-C++ 4 et ça compile sans problèmes; Ca compile également sans problèmes avec Dev-Cpp 5.
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.