Créez, gérez et utilisez les mots de passe

Yoann

Cet article a pour but de montrer les différents moyens pour gérer des informations.

- Titre : Créez, gérez et utilisez les mots de passe

- Auteur : Yoann

- Parution : 14 mai 2004

- Mise à jour : 22 décembre 2019

- Licence : Ce document est issu de https://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.

Sommaire

- I. Présentation

- II. Description du programme

- III. Mot de passe dans le source du programme

- IV. Changer le mot de passe

- IV-A. Fichier ini

- IV-B. Base de registre

- V. Charger le mot de passe

- V-A. Fichier ini

- V-B. Base de registre

I - Présentation

Un mot de passe permet de sécuriser un programme ou une partie d'un programme. Il permet de restreindre l'accès aux utilisateurs. Le ou les administrateurs ayant le mot de passe peuvent alors accéder à certaines options d'un programme ou à un programme tout entier.
Le mot de passe permet également d'identifier par le login (nom de l'utilisateur), la personne qui utilise l'application.

II - Description du programme

Lors de l'exécution d'un programme, une boite de dialogue peut vous demander un mot de passe pour accéder aux programmes.
Pour concevoir une application offrant cette option, il faut tout d'abord choisir un mot de passe.
Il y a deux types de solutions suivant l'application que l'on veut effectuer :
- la première consiste à mettre le mot de passe dans le source du programme ;
- la deuxième permet à l'administrateur de changer le mot de passe.

III - Mot de passe dans le source du programme

Ce programme est très facile à réaliser en Delphi.
Voici un aperçu du programme lors de son exécution.

Nous avons besoin de deux composants TButton, un TEdit et deux TLabel.
Disposez ces composants comme ci-dessus.
Le but est de comparer ce que l'utilisateur entre dans le TEdit et de réagir lors de l'appui sur le bouton OK.

procedure TForm1.Button1Click(Sender: TObject);
begin
//Bouton OK
if Edit1.Text='delphi' then
ShowMessage('Mot de passe correct !')
else
ShowMessage('Mot de passe incorrect !');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
//Bouton Annuler
Close;
end;

Télécharger le programme [5 Ko]

Astuce : Mettez * à la place de #0 dans la propriété PassWordChar du composant TEdit. Cela permettra de cacher le mot de passe lorsque l'utilisateur tapera le mot de passe.

IV - Changer le mot de passe

Après avoir validé son mot de passe, l'administrateur pourra alors le changer. Il faut donc un moyen de sauvegarder le mot de passe, car celui-ci contrairement à l'exemple précédent pourra changer.
Voici une capture de l'application.

Nous avons besoin de deux composants TButton, un TEdit et deux TLabel. Disposez ces composants comme ci-dessus.
Le but est de comparer ce que l'utilisateur entre dans le TEdit et de réagir lors de l'appui sur le bouton OK.

procedure TForm1.Button2Click(Sender: TObject);
begin
//Bouton Annuler
Close;
end;

La validation du changement de mot de passe se fait en cliquant sur le bouton OK.
On doit alors valider l'opération, si le texte (mot de passe) dans le Edit1 correspond à celui du texte du Edit2.

procedure TForm1.Button1Click(Sender: TObject);
begin
//Bouton Ok
if Edit1.Text=Edit2.Text then
begin
ShowMessage('Le mot de passe est valide.');
end else
ShowMessage('Le mot de passe ne correspond pas à la confirmation.')
end;

Ensuite, il faut sauvegarder le mot de passe.
Je vous propose trois solutions pour l'enregistrement du mot de passe en utilisant :
- un fichier ini ;
- la base de registre.

IV-A - Fichier ini

Un fichier ini est utilisé pour sauvegarder une information. Dans notre exemple ce sera le mot de passe.

uses IniFiles;

procedure TForm1.Button1Click(Sender: TObject);
Var FichierIni : TIniFile;
begin
//Bouton OK
if Edit1.Text=Edit2.Text then //Si le mot de passe est bien le même alors...
begin
//On affiche un message indiquant que le mot de passe est valide
ShowMessage('Le mot de passe est valide.');
//Ouvre le fichier ini (s’il n'existe pas, le fichier est alors créé)
FichierIni:=TIniFile.Create('monfichier.ini');
//Enregistre le mot de passe
FichierIni.WriteString('Preference','Pass',Edit1.Text);
//Détruit l'objet
FichierIni.Free;
Close;
end else //Sinon...
//On affiche un message indiquant qu'il y a une différence entre les deux edit
ShowMessage('Le mot de passe ne correspond pas à la confirmation.');
end;

Le fichier ini sera par défaut dans le répertoire Windows.

Télécharger le programme [6 Ko]

IV-B - Base de registre

La base de registre est aussi utilisée pour l'enregistrement de données.

uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
Var Registre : TRegistry;
begin
//Bouton OK
//Si le texte des deux edit est le même alors...
if Edit1.Text=Edit2.Text then
begin
// Affiche un message indiquant que le mot de passe est valide
ShowMessage('Le mot de passe est valide.');
// Crée un objet TRegistry
Registre:=TRegistry.Create;
// Définit la clé principale
Registre.RootKey:=HKEY_CLASSES_ROOT;
// "OpenKey" ouvre une clé particulière (True signifie que
// la clé est créée si elle n'existe pas}
Registre.OpenKey('\MonRep',True);
// Renvoie un string à partir du nom de la valeur
Edit1.Text:=Registre.ReadString('Pass');
// Ferme la clé
Registre.CloseKey;
// Détruit l'objet
Registre.Free;
end else //Sinon...
//On affiche un message indiquant que le texte des deux edit est différent
ShowMessage('Le mot de passe ne correspond pas à la confirmation.');
end;

Télécharger le programme [6 Ko]

V - Charger le mot de passe

Après avoir enregistré le mot de passe, il faut maintenant le charger.

Nous avons besoin de deux composants TButton, un TEdit et un TLabel.
Disposez-les comme ci-dessus.

V-A - Fichier ini

uses IniFiles;

procedure TForm1.Button1Click(Sender: TObject);
Var FichierIni : TIniFile;
passe:string;
begin
//Bouton OK
//Crée le fichier ini s'il n'existe pas
FichierIni:=TIniFile.Create('Monfichier.ini');
//Lit le contenu de "Pass" dans "Preference" du fichier ini
passe:=FichierIni.ReadString('Preference','Pass',Edit1.Text);
//Détruit l'objet
FichierIni.Free;
//Si le mot de passe correspond alors...
if Edit1.Text=passe then
begin
//Affiche un message indiquant que le mot de passe est correct
ShowMessage('Le mot de passe est valide.');
//J'effectue ce que je veux...
Close; //Quitte l'application
end else
//Affiche un message indiquant que le mot de passe est incorrect
ShowMessage('Le mot de passe est incorrect.');
end;

Télécharger le programme [6 Ko]

V-B - Base de registre

uses Regitry;

procedure TForm1.Button1Click(Sender: TObject);
Var Registre : TRegistry;
pass     : string;
begin
//Bouton OK
//Crée un objet TRegistry
Registre:=TRegistry.Create;
//Définit la clé principale
Registre.RootKey:=HKEY_CLASSES_ROOT;
//"OpenKey" ouvre une clé particulière (False signifie que la
// clé n'est pas créée si elle n'existe pas
Registre.OpenKey('\MonRep',False);
//Renvoie un string à partir du nom de la valeur
Edit1.Text:=Registre.ReadString('Pass');
//Ferme la clé
Registre.CloseKey;
//Détruit l'objet
Registre.Free;
//Si le mot de passe correspond alors...
if Edit1.Text=pass then
begin
//Affiche un message indiquant que le mot de passe est correct
ShowMessage('Le mot de passe est valide.');
//J'effectue ce que je veux...
Close; //Quitte l'application
end else //Sinon...
//Affiche un message indiquant que le mot de passe est incorrect
ShowMessage('Le mot est incorrect.');
end;

Télécharger le programme [6 Ko]

Astuce : pour plus de sécurité, vous pouvez crypter votre mot de passe pendant l'enregistrement puis le décrypter avant la comparaison.