Comment puis-je hachez une corde avec Delphi? [fermé]

Comment faire un hachage MD5 d'une chaîne avec Delphi?

20
demandé sur devstopfix 2008-09-12 14:26:31

8 réponses

si vous voulez un digest MD5 et avoir le Indy composants installés, vous pouvez faire ceci:

uses SysUtils, IdGlobal, IdHash, IdHashMessageDigest;

with TIdHashMessageDigest5.Create do
try
    Result := TIdHash128.AsHex(HashValue('Hello, world'));
finally
    Free;
end;

les algorithmes les plus populaires sont pris en charge dans le Delphi Programme De Cryptographie:

  • Haval
  • MD4, MD5
  • RipeMD-128, RipeMD-160
  • SHA-1, SHA-256, SHA-384, SHA-512,
  • Tiger

mise à Jour DCPCrypt est maintenant maintenu par Warren Postma et la source peut être trouvé ici.

27
répondu devstopfix 2017-05-23 11:33:13

Si vous voulez un MD5 chaîne comme hexadécimal et vous avez Delphi XE 1 installé, de sorte que vous avez Indy 10.5.7 les composants que vous pouvez faire ceci:

utilise IdGlobal, IdHash, IdHashMessageDigest;

class function getMd5HashString(value: string): string;
var
    hashMessageDigest5 : TIdHashMessageDigest5;
begin
    hashMessageDigest5 := nil;
    try
        hashMessageDigest5 := TIdHashMessageDigest5.Create;
        Result := IdGlobal.IndyLowerCase ( hashMessageDigest5.HashStringAsHex ( value ) );
    finally
        hashMessageDigest5.Free;
    end;
end;
16
répondu STB Land 2013-08-14 13:44:52

j'utilise habituellement DCPCrypt2 (Delphi Programme De Cryptographie) de David Barton (Ville dans le Ciel).

Il contient également les Algorithmes de Chiffrement suivants:

  • Blowfish
  • Cast 128
  • Cast 256
  • DES, 3DES
  • Glace, Glace Mince, Ice2
  • idée
  • Mars
  • Misty1
  • RC2, RC4, RC5, RC6
  • Rijndael (la nouvelle AES)
  • Serpent
  • thé
  • Twofish

mise à Jour DCPCrypt est maintenant maintenu par Warren Postma et la source peut être trouvé ici.

10
répondu Schalk Versteeg 2017-05-23 12:10:54

TurboPower Lockbox prise en charge:

  • MD-5,
  • SHA-1 et
  • toute la famille SHA-2 incluant les SHA-512/224 & SHA-512/256 récemment publiés.
4
répondu Sean B. Durkin 2011-12-14 13:21:13

Spring For Delphi project -http://www.spring4d.org - a implémentation pour un certain nombre de shaxxxx hash, MD5 hash, et aussi un certain nombre de fonctions CRC

4
répondu Arioch 'The 2014-01-17 13:59:43

ceci est une modification de la réponse de devstopfix qui a été acceptée.

dans la version actuelle D'Indy, vous pouvez hachez plus facilement les chaînes et les flux. Exemple:

function MD5String(str: String): String;
begin
  with TIdHashMessageDigest5.Create do
    try
      Result := HashStringAsHex(str);
    finally
      Free;
    end;
end;

Utiliser HashString,HashStringAsHex, HashBytes,HashBytesAsHex,HashStream,HashStreamAsHex. L'avantage est que vous pouvez également spécifier un encodage de texte

4
répondu StanE 2015-01-25 03:20:07

si tout ce que vous voulez faire est d'utiliser un dictionnaire, et vous ne cherchez pas la sécurité alors:

Dans Delphi 2009 et plus, les valeurs de hachage pour les chaînes peuvent être créées avec

BobJenkinsHash(Value, Length(Value) * SizeOf(Value), 0)

où la valeur est une chaîne.

http://docwiki.embarcadero.com/VCL/en/Generics.Defaults.BobJenkinsHash

4
répondu mjn 2016-04-12 15:57:13

vous pouvez également utiliser L'API WindowsCrypto avec Delphi:

il y a une unité là-dedans qui enveloppe toute la CryptoAPI. Vous pouvez également utiliser Lockbox, qui est maintenant open source.

à la fin, vous pouvez supporter à peu près n'importe quel algorithme de hachage avec Delphi. L'exemple D'Indy est probablement le plus proche que vous obtiendrez nativement dans Delphi puisque Indy est inclus avec la plupart des versions de Delphi. Pour le reste, vous devrez utiliser une bibliothèque ou écrire plus de code pour accéder au CryptoAPI ou l'implémenter vous-même.

3
répondu Jim McKeeth 2008-09-12 16:41:06