Cryptage du mot de passe

Résolu/Fermé
stevelaclasse Messages postés 4 Date d'inscription lundi 30 août 2010 Statut Membre Dernière intervention 17 novembre 2010 - 30 août 2010 à 15:32
stevelaclasse Messages postés 4 Date d'inscription lundi 30 août 2010 Statut Membre Dernière intervention 17 novembre 2010 - 6 sept. 2010 à 18:54
Bonjour,
j'ai le programme suivant :
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{

char ip[6] ;
char mot[] = "azerty" ;

printf("entrer votre mot de passe:") ;



scanf("%s",&ip) ;
short comp = strcmp(ip,mot);
if(comp==0)
{
printf(" votre mot de passe est correct continuer \n \a") ;
system("pause") ;
}
else

{printf("votre mot de passse est incorrect desole") ;
system("pause") ;
}


}
bon je voudrais insérer une fonction je ne sais pas la quelle qui remplacera chaque lettre entrer par des étoiles
pour le cas présent je voudrais par exemple que l'ordinateur au lieu d'afficher azerty comme il fait affiche plutôt ****** ou ------ ou encore 000000
merci d'avance.

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
Modifié par fiddy le 30/08/2010 à 17:44
Bonjour,
Ceci n'est pas possible nativement.
Néanmoins, tu peux le faire en utilisant des fonctions du noyau.
Vu les system("PAUSE"), j'en déduis que t'es sur Windows.
Dans ce cas, tu pourras très bien utiliser la fonction _getch().

Je t'ai fait un petit exemple :
#include <stdio.h>  
#include <stdlib.h>  
#include <conio.h>  

int main(void) {  
 char mdp[9];  
 int c;  
 int i=0;  
 printf("tapez texte: ");  
 fflush(stdout);  
   
 while(i<sizeof mdp - 1 && (c=_getch())!='\r') {  
  mdp[i++]=c;  
  putchar('*');  
 }  
 mdp[i]=0;  
 putchar('\n');  
   
 puts(mdp);  

 system("PAUSE");  
 return 0;  
}  

Néanmoins, ce code n'est pas parfait puisqu'il ne te sera pas possible d'utiliser la touche backspace. De plus, je te conseille le bloc dans une fonction. Ce sera plus propre.

Sinon, quelques remarques concernant ton code :
scanf("%s",&ip) ; attention, pas d'esperluette (&) devant ip. ip représente déjà une adresse puisqu'employé en argument.
Utilisez scanf sans contrôle sur la taille est très dangereux. Il vaut mieux utiliser fgets ou alors faire très attention. Par exemple : scanf("%5s",ip) eut été préférable.

system("pause") ;
D'une manière générale, il convient d'éviter d'utiliser la fonction system(), pas du tout performante et non portable.

main()
Le prototype de la fonction main sans argument est : int main(void);
Elle renvoie un int qu'il convient de ne pas oublier. D'où le return 0; en fin de programme.

Et enfin pour information, il ne s'agit pas d'un cryptage de mot de passe puisque chaque lettre de ton tableau sera en clair.
Cdlt,
0
Dans ton formulaire au champ mot de passe, ajoute "Password", ce sera des points noir ou étoile ..

Cordialement
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
30 août 2010 à 22:04
Il n'y a pas de formulaire sans IG...
0
stevelaclasse Messages postés 4 Date d'inscription lundi 30 août 2010 Statut Membre Dernière intervention 17 novembre 2010
6 sept. 2010 à 18:54
merci fiddy jai pu fire ce que je voulais .
0