Stockage de mot de passe crypté

Soyez le premier à donner votre avis sur cette source.

Vue 11 127 fois - Téléchargée 903 fois

Description

Comme le disait Delphiprog dans une de ses dernières sources, "Il semble que la saisie de mots de passe soit en vogue en ce moment" !!
Quelqu'un m'a justement demandé, récemment, comment crypter un mot de passe, pour le stocker dans un fichier... Car il est évident que stocker un mot de passe en clair dans un fichier est un trou de sécurité énorme !!

Ma source présente donc une petite fonction de hachage... Le principe est (ici)d'effectuer des opérations sur les valeurs numériques de chaque caractère du mot de passe, pour le transformer en un nombre unique pour chaque texte différent... L'opération se veut irréversible, mais je ne garanti pas à 100% que la mienne le soit !!
En toute logique, c'est le cas, je pense, mais je laisse le soin à ceux qui aime les défis de le vérifier !!
La valeur numérique obtenue peu donc être stockée en toute sécurité telle quelle... Ensuite, pour vérifier qu'un mot de passe est valide, on applique la fonction de hachage sur le mot de passe donné, et on compare les deux valeurs numériques !

Source / Exemple :


//Ma fonction de hachage... Voir le ZIP pour l'utilisation

function Hachage(Pass: String): Integer;
var i: Integer;
    x: Int64;
const cst1: Int64 = $3AD3C18F;
      cst2: Int64 = $0000564B;
begin

  Result := 0;

  for i := 1 to Length(Pass) do
    begin

      Result := (Result shl 4) + (Ord(Pass[i]) xor cst2);
      x := Result and cst2;

      If x <> 0 then
        Result := Result xor (x shr 4);

      Result := Result * (cst1 + (cst2 mod (not x)));
      Result := Result * 2 + 1;
      //Le nombre sera impair... Pourquoi ?! Pourquoi pas ?!!
    end;

end;

Conclusion :


Pour le nombre impair, c'était juste comme ça... ;o)

Comme je l'ai dit plus haut, je ne garantit pas que ma fonction soit fiable à 100%... Je ne suis pas expert en sécurité !!

Un dernier point : au niveau "trou de sécurité", il est évident qu'on ne peut normalement pas laisser le "If ... then ... else" à la fin pour comparer les deux valeurs numériques et agir en conséquence... Mais c'est un autre problème !!!

Je n'ai pas commenté le code, car il n'est pas compliqué... Si vous avez toutefois des questions, n'hésitez pas !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Bacterius
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
5 -
Ah en passant, en faisant "Result := Result * 2 + 1", tu prives la fonction de hachage de la moitié de son ensemble de hachage : les nombres pairs. :'(

Cordialement, Bacterius !
MUSTAPH_A
Messages postés
20
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
8 mai 2010
-
si bon merci
cs_jer64
Messages postés
3
Date d'inscription
vendredi 11 avril 2003
Statut
Membre
Dernière intervention
6 mai 2003
-
Merci beaucoup, je vais regardé ton code.
cs_jer64
Messages postés
3
Date d'inscription
vendredi 11 avril 2003
Statut
Membre
Dernière intervention
6 mai 2003
-
Alors comment peut on faire pour certe ne pas rendre inviolable le mot de passe mais pour s'en rapprocher?
cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
24 -
Pour jer64 : c'est tout à fait normal !
Le but de ce code source est, avant tout, de fournir une fonction de hachage, en aucun aucun cas de démontrer l'inviolabilité d'un système.

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.