Stockage de mot de passe crypté

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

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.