IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

XE2, MD5 ICS et MessageDigest


Sujet :

Langage Delphi

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 376
    Points : 2 992
    Points
    2 992
    Par défaut XE2, MD5 ICS et MessageDigest
    Bonjour

    Je viens de "tomber" sur un truc curieux qui peut intéresser du monde.
    Ayant besoin d'obtenir le MD5 d'une chaîne, j'ai utilisé la fonction de la librairie ICS du très connu François Piette.
    La chaîne résultante devait être comparée avec le résultat de la fonction MD5 de PHP et la comparaison s'est bizarrement avérée négative.
    Voulant comprendre, j'ai aussi utilisé la fonction de Delphi dans l'unité MessageDigest_5.pas.
    Résultat: bien que normalement compatible avec XE2 et +, la fonction de François Piette ne sait pas gérer les chaînes accentuées.

    Code exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    const
      Srce1: string = 'La chaîne à convertir';
      Srce2: string = 'La chaine a convertir';
    var
      Md5: MessageDigest_5.IMD5;
      V1, V2: string;
    begin
     
      V1 := OverbyteIcsMD5.StrMD5(Srce1);
      Md5 := GetMD5;
      Md5.Update(Srce1);
      V2 := Md5.AsString();
      Md5 := nil;
      ShowMessage(V1 + #13#10 + V2);
     
      V1 := OverbyteIcsMD5.StrMD5(Srce2);
      Md5 := GetMD5;
      Md5.Update(Srce2);
      V2 := Md5.AsString();
      Md5 := nil;
      ShowMessage(V1 + #13#10 + V2);
    Donc, méfiez-vous si vous utilisez cette fonction qui pourrait bien vous induire en erreur dans vos développements (ceci dit uniquement à titre d'information et sans aucune critique envers l'auteur).

    Ceci dit, essayer les 2 chaînes exemple sur les sites suivants:

    http://www.md5.cz/
    http://md5-hash-online.waraxe.us/

    Les résultats seront également différents.

    Papy !

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    J'ai eu le même problème, du coup j'ai utilisé ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    unit MD5;
     
     
    interface
     
     
    function MD5Hash(pStringToHash:string):string;
     
     
    implementation
     
     
    uses Types, 
            MessageDigest_5;// in {BDS]\Source\soap\wsdlimporter
     
     
    function MD5Hash(pStringToHash:string):string;
    var
      MD5: IMD5;
    begin
      MD5 := GetMD5;
      MD5.Init;
      MD5.Update(TByteDynArray(RawByteString(pStringToHash)), Length(pStringToHash));
      Result := MD5.AsString;
    end;
     
     
    end.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 376
    Points : 2 992
    Points
    2 992
    Par défaut
    Oui, c'est effectivement la solution qui va bien et que je vais transformer en fonction de cette façon.

    J'ai envoyé un mail à l'auteur de ICS pour lui signaler le problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Hash MD5 avec MessageDigest (apache codec)
    Par nicdo77 dans le forum Sécurité
    Réponses: 2
    Dernier message: 24/01/2013, 17h52
  2. Composants ICS et Delphi XE2
    Par Teddy dans le forum Composants FMX
    Réponses: 5
    Dernier message: 25/02/2012, 09h55
  3. [ICS FtpClient] Date modif de fichier et listage de dossier
    Par Ingham dans le forum Composants VCL
    Réponses: 8
    Dernier message: 13/06/2004, 20h54
  4. [C#] A propos de MD5
    Par ensisoft dans le forum ASP.NET
    Réponses: 7
    Dernier message: 09/03/2004, 22h15
  5. C# Socket MD5
    Par borgfabr dans le forum Développement
    Réponses: 4
    Dernier message: 08/03/2004, 10h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo