Cryptage du mot de passe

Résolu
stevelaclasse Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
stevelaclasse Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
Nordine
 
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   Statut Contributeur Dernière intervention   1 846
 
Il n'y a pas de formulaire sans IG...
0
stevelaclasse Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
merci fiddy jai pu fire ce que je voulais .
0