IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

[Delphi] Lecture et comparaison de mots de passe


Sujet :

Langage Delphi

  1. #1
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut [Delphi] Lecture et comparaison de mots de passe
    Bonjour...

    Voila mon problème:

    Je suis en train de réaliser en pascal (sous Delphi) une fenetre de login (nom et mot de passe).

    Sur la form, l'utilisateur du logiciel sera amené a saisir sont mot de passe, et le programme se chargera d'aller vérifier l'exactitude de ce mot de passe dans un fichier texte qui se présente tel quel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       // Liste mot de passe
     
      Jean  : MotDePasse1
      Paul   : MotDePasse2
      julien  : MotDePasse3
    Or je n'arrive pas à, en fonction du nom saisi, pointer sur la bonne ligne du fichier texte pour comparer les deux mot de passe (celui saisi et celui contenu dans le fichier)

    Quelqu'un peut-il m'aider?
    Heureux est l'étudiant qui, comme la rivière, arrive à suivre son cours sans sortir de son lit........

  2. #2
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Peux-tu nous dire comment tu as pratiqué (avec un bout de code au besoin) ?



    @++
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 176
    Points
    176
    Par défaut
    bonjour,

    techniquement ça parait simple à faire mais c'est vrai qu'un peu de code serait bien...

    il suffit de parcourir le fichier et de comparer les N caracteres du nom de login avec les n carateres de ton fichier (je simplifie un peu...) et si cohérence on compare les mots de passe en repérant son debut et fin

    attention aux majuscules/minuscules

    etc..

    sinon question sécurité de tes mots de passe ça me parait un peu léger ! du moins à première vue.

    bonne continuation
    Un bon exemple vaut mieux qu'une longue explication confuse...

  4. #4
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    Salut a vous...

    En fait pour la sécurité de mes mots de passe y a pas de soucis le logiciel restera privé (pour une entreprise) et le fichier ne sera accessible que par l'administrateur....

    Alors je vais bien te donner un bout de mon code mais je te préviens que c'est une usine à gaz (je ne connais pas le pascal alors je fais avec ce que j'ai )...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
        var
           Ligne: string;
           MotPasse: string; //mot de passe du fichier texte
           MotPasseSaisi: string; //mot de passe saisi par l'utilisateur
           NomUtilisateur: string;
        Begin
           MotPasseSaisi := Edit1.Text; //récupération du mot de passe
           NomUtilisateur := Edit2.Text;
          AssignFile(FichierPassWord, 'c:\FichierPassWord.txt');
          reset(FichierPassWord);
          repeat
             I1:=0;
             I2:=0;
             Readln(FichierPassWord, Ligne); 
             if (Ligne[1] = NomUtilisateur[1]) then
             Begin      
                  //je supose (dans un 1er temps) qu'aucun nom de commence  
                  //par la meme lettre
                  while not (eoln(FichierPassWord)) do
                  Begin
                     I1:=I1+1;
                     if(Ligne[I1]=':') then
                     Begin
                        while not (eoln(FichierPassWord)) do
                        Begin
                           I1:= I1+1;
                           I2:= I2+1;
                           MotPasse[I2]:=Ligne[I1];
                        end; 
                     end;  
                  end;
            end;
            If (MotPasse=MotPasseSaisi)
               //acces autorisé.....
            else
              //acces refusé
    Voila l'usine a gaz (en sachant que dans un premier temps je suppose que je ne peux pas avoir deux nom qui commence par la meme lettre)....

    Et deja je ne peux pas écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                MotPasse[I2]:=Ligne[I1];
    ... Si MotPasse est un string il faut que ce soit un tableau de char (je sais pas pquoi).

    ...Je sais pas si ce code va t'aider ...
    Heureux est l'étudiant qui, comme la rivière, arrive à suivre son cours sans sortir de son lit........

  5. #5
    Membre éclairé
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Points : 746
    Points
    746
    Par défaut
    la premire chose qui m'interpelle dans ton code, c'est que tu suppose que tous les noms ont une premiere lettre différente j'imagine que tu t'autorise ce raccourci parce que tu ne sais pas comment extraire le nom à partir de la ligne lue dans le fichier, alors qu'en réalité cette opération est très simple grâce aux fonction Pos et Copy (je te renvoie à l'aide de delphi pour leur définition). ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Readln(FichierPassWord, Ligne);
    NomUtilisateur := Copy(Ligne, 1, Pos(':', Ligne) - 1);
    MotDePasse := Copy(Ligne, Pos(':', Ligne) + 1, Length(Ligne) - Pos(':', Ligne) - 1);
    maintenant il te suffit de parcourir ton fichier de mots de passe et de confronter les infos saisies à chaque utilisateur. de là tu va dégager deux possibilités : soit le nom d'utilisateur tapé à l'écran ne fait pas partie du fichier, soit il y est. dans ce second cas, il faut alors comparer le mot de passe saisi et le mot de passe indiqué dans le fichier, et donc autoriser ou non la suite du déroulement.
    si je peux me permettre un dernier conseil, efface le code que tu nous a montré et recommence le avec mes indications

    ps : pour un débutant tu indentes ton code systématique, c'est agréable et ça change
    Donnez un poisson à un homme et il mangera pendant un jour... Apprenez-lui à pêcher et il s'assiéra dans une barque et boira de la bière toute la journée

  6. #6
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 176
    Points
    176
    Par défaut
    bonjour,

    à la volée j'ai fait ce petit programme en pascal (à toi d'adapter pour Delphi)

    je suppose que mon fichier de mot de passe est propre en structure c'est à dire un nom user, un espace, deux points, un espace et un mot de passe sans blancs à la fin.. (à toi de faire les tests comlémentaires !)



    mon fichier mdp.txt est dans le meme dossier que l'executable..
    à toi de gérer tout cela aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    alain : alain1
    nicole : nicole12
    kevin : kevin123
    jean : jean1234
    nicolas : nicolas12345
    fred : fred123456
    michel : michel1234567
    frank : frank12345678
    antoine : antoine123456789
    voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    program mdp;
     
    var F:Text;
        a,user,mp,user_enr,mp_enr:string;
        flag,PosDebMp:integer;
     
    begin
        write('votre user ? ');
        readln(user);
     
        write('votre mdp ? ');
        readln(mp);
     
        assign(F,'mdp.txt');
        reset(F);
        flag:=0;
     
        while not eof(F) do Begin
            readln(F,a);
            user_enr:=copy(a,1,pos(' :',a)-1); 
            PosDebMp:=pos(': ',a);
            mp_enr:=copy(a,PosDebMp+2,length(a)-PosDebMp-1);
     
            if (user=user_enr) and (mp=mp_enr) then begin
                Flag:=1;
                Writeln('vous êtes bien identifé  ',user_enr,' avec le mot de passe ',mp_enr);
                break;
            end;
        end;
     
        if flag=0 then Writeln('vérifier votre user ou mot de passe ....');
     
        writeln;
        write('Enter pour quitter..');
     
        readln;
     
        close(F);
    end.
    Un bon exemple vaut mieux qu'une longue explication confuse...

  7. #7
    Membre habitué Avatar de Jayceblaster
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 420
    Points : 174
    Points
    174
    Par défaut
    Ok merci beaucoup denokan.... (et merci pour le compliment aussi ).
    J'ai effacé mon code et c'est vrai que c'est bien pratique le "pos"...

    Merci a tous ....
    Heureux est l'étudiant qui, comme la rivière, arrive à suivre son cours sans sortir de son lit........

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comparaison de mot de passe avec la base de données
    Par ayaditch dans le forum NetBeans
    Réponses: 2
    Dernier message: 09/06/2010, 09h56
  2. [SQL] Comparaison de mots de passe
    Par Simpom dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/01/2008, 17h42
  3. [MySQL] Comparaison de mots de passe PHP-MySQL
    Par jaymzwise dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/07/2007, 14h31
  4. Lecture Fichier chemin reseau + mot de passe
    Par jeanmy dans le forum Delphi
    Réponses: 4
    Dernier message: 18/10/2006, 13h58
  5. Encodage et comparaison de mot de passe
    Par SuperCed dans le forum Sécurité
    Réponses: 4
    Dernier message: 27/05/2005, 12h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo