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

jjnouiphp Messages postés 33 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 21 janvier 2020 - Modifié le 21 janv. 2020 à 18:13
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 25 janv. 2020 à 11:58
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

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
25 janv. 2020 à 11:58
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,
0
Rejoignez-nous