Problème avec : Md5 api, le celebre algorithme de hachage sous delphi

Signaler
Messages postés
33
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
21 janvier 2020
-
Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
18 mai 2020
-
Bonjour.

Cela fait maintenant une dizaine d'année que je m'appuie sur : Md5 api, le célebre algorithme de hachage sous delphi.

Jusqu'à maintenant tout allait bien sous Delphi 7.
Windows 10 est arrivé, Delphi7 n'est plus trop le bienvenu.

J'ai donc porté mes programmes de Delphi 7 à Delphi XE5.

Tout allait bien (après quelques retouches), quand je suis arrivé à un programme qui utilise MD5.

Le résultat n'étant pas celui attendu, j'ai effectué quelques tests avant de trouver une faille ?

En fait quant le string soumis à MD5 mesure plus de 55 caractères les résultats diffèrent selon la version de Delphi.

J'ai donc isolé le problème et le test fonctionne bien avec le 2ème string qui a une longueur de 55,
alors que le 1er test avec 56 caractères diffère.

Ce test est un résumé simplifié de mes tests pour permettre la reproduction du phénomène; le contenu du string ne change rien,
seule la longueur provoque le problème.

Voici le test en question.

procedure TForm1.test1Click(Sender: TObject);
begin
  ShowMessage(MD5('00000000000000000000000000000000000000000000000000000000')); // résultats différents selon version de Delphi
  ShowMessage(MD5('0000000000000000000000000000000000000000000000000000000'));  // résultats identiques 
end;




Y a t'il un moyen de corriger cela ?


Les moyens de contourner le problème sont très lourds :
interaction avec un site hébergé à l'extérieur : Script PHP, Javascript et base de données MySQL sont à modifier, ainsi
que plusieurs programmes en local sous delphi.
De plus cela nécessiterai une refonte avec migration de l'ancienne version vers la nouvelle.



--

1 réponse

Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
18 mai 2020
29
Bonjour,

si c'est l'unité de f0xi que tu utilises la correction est très simple à faire !

mais comme tu ne précises pas quel code que tu utilises pour calculer le hash ...
j'attends la précision avant de m'avancer ;)

Cordialement,