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

API, COM et SDKs Delphi Discussion :

Par défaut MD5 Renvoie une Chaine Majuscule ou Minuscule


Sujet :

API, COM et SDKs Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Mai 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut Par défaut MD5 Renvoie une Chaine Majuscule ou Minuscule
    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
    function MD5(const fileName : string) : string;
    var
      idmd5 : TIdHashMessageDigest5;
      fs : TFileStream;
      hash : T4x4LongWordRecord;
    begin
      idmd5 := TIdHashMessageDigest5.Create;
      fs := TFileStream.Create(fileName, fmOpenRead OR fmShareDenyWrite) ;
      try
        result := idmd5.AsHex(idmd5.HashValue(fs)) ;
      finally
        fs.Free;
        idmd5.Free;
      end;
    end;
    Salut tous le monde :

    La fonction ci-dessus récupurée sur le site Delphi.About.Com, exécutée sous
    Delphi 7 Entreprise, Xp SP2 renvoie une chaine en MAJUSCULE.
    Je m'adresse à qui peut m'éclairer est-ce par défaut sans recourir explicitement à la fonction UpperCase() ?.
    Merci pour votre soutien
    Cordialement

  2. #2
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    selon la RFC 1321, MD5 se represente avec les caractères 0..9/a..f et non 0..9/A..F

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Mai 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut Par défaut MD5 Renvoie une Chaine Majuscule ou Minuscule
    Merci Who pour pour l'information, mais à votre avis et celui de ceux qui ont pri la peine de tester le résultat renvoyé, est-il le meme (Je veux dire une chaine en caractère minuscule), j'hésite de m'en servir à une fin sensible.
    Merci

  4. #4
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    tu n'est pas obliger d'utiliser la fonction MD5 fournie par les compo Indy.
    du moins la fonction IdMD5.AsHex qui apparement n'est pas codée correctement.

    tu peux utiliser cette fonction :

    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
    {
    type
      TMD5Hash = array[$0..$F] of byte;
    }
     
    function ToBin(aData: TMD5Hash): string;
    type
      PiChar = ^TiChar;
      TiChar = packed array[0..1] of {$IFDEF UNICODE}word{$ELSE}byte{$ENDIF};
    var
      pR: PiChar;
      N : integer;
    begin
      SetLength(result, 32);
      pR := @result[1];
      for N := 0 to 15 do
      begin
        pR[0] := (aData[N] shr 4) or $30;
        if pR[0] > $39 then
          inc(pR[0], $27);
     
        pR[1] := (aData[N] and $f) or $30;
        if pR[1] > $39 then
          inc(pR[1], $27);
        inc(pR);
      end;
    end;

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Mai 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut Par défaut MD5 Renvoie une Chaine Majuscule ou Minuscule
    Comme je ne suis pas doué pour en tirer profit de la solution que vous me proposer : Dans mon cas je veux juste vérifier l'integrité de certains fichiers que je pretends proteger en passant le chemin en paramètre, en plus le moins de mon avis la fonction SHR opère sur la configuration locale ce choix m'a deja posé des problemes lors des comparaisons de résultas.

  6. #6
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    Citation Envoyé par mmsalem Voir le message
    la fonction SHR opère sur la configuration locale ce choix m'a deja posé des problemes lors des comparaisons de résultas.
    SHR n'est pas une fonction mais une instruction assembleur, je ne vois pas en quoi elle opérerait une quelconque modification de la configuration locale si cela veux réellement dire quelque chose.

    de toute façon, quand on travail avec les hash, on compare toujours les données brute et non les représentation de ces hash.

    en gros, si le MD5 te renvois une donnée du genre TMD5Digest ou TMD5Hash, il faut comparer cette donnée binaire avec la source.

    sinon, n'oublie pas de mettre à jours tes composants Indy, tu utilise une vieille version.

    et en corrigeant ça donne :

    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
    function MD5(aFileName : string) : string;
    var
      idmd5 : TIdHashMessageDigest5;
      fs : TFileStream;
    begin
      idmd5 := TIdHashMessageDigest5.Create;
      try
        fs := TFileStream.Create(aFileName, fmOpenRead or fmShareDenyWrite) ;
        try
          result := LowerCase(idmd5.HashStreamAsHex(fs));
        finally
          fs.Free;
        end;
      finally
        idmd5.Free;
      end;
    end;

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Mai 2008
    Messages : 16
    Points : 9
    Points
    9
    Par défaut Par défaut MD5 Renvoie une Chaine Majuscule ou Minuscule
    Merci Who de votre contribution, je vais tester et décider du choix qui convient.
    Mes reconnaissances.

Discussions similaires

  1. Valeur par défaut = valeur d'une autre table
    Par lm110379 dans le forum Modélisation
    Réponses: 11
    Dernier message: 11/05/2007, 15h39
  2. Valeur par défaut à prendre dans une autre table
    Par louroulou dans le forum Access
    Réponses: 6
    Dernier message: 19/07/2006, 10h38
  3. Valeur par défaut lié a une table
    Par Alpha31 dans le forum Access
    Réponses: 2
    Dernier message: 18/05/2006, 20h27
  4. Réponses: 2
    Dernier message: 10/05/2006, 09h22
  5. [md5] obtenir une chaine de caractère
    Par FFF dans le forum Sécurité
    Réponses: 1
    Dernier message: 27/10/2005, 23h08

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