Comment puis-je hachez une corde avec Delphi? [fermé]
Comment faire un hachage MD5 d'une chaîne avec Delphi?
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.
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;
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.
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.
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
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
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
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.