How do I hash a string with Delphi?
## How to Hash a String with Delphi
**Using the Indy Components**
If you have the Indy components installed and want an MD5 digest, you can use the following code:
```
uses SysUtils, IdGlobal, IdHash, IdHashMessageDigest;
with TIdHashMessageDigest5.Create do
try
Result := TIdHash128.AsHex(HashValue('Hello, world'));
finally
Free;
end;
```
**Using the Delphi Cryptography Package (DCPCrypt)**
The Delphi Cryptography Package supports a wide range of hash algorithms, including:
* Haval
* MD4, MD5
* RipeMD-128, RipeMD-160
* SHA-1, SHA-256, SHA-384, SHA-512
* Tiger
**Using the WindowsCrypto API**
You can also use the WindowsCrypto API with Delphi. There are various resources and libraries available online that provide wrappers for the CryptoAPI.
**Using DCPCrypt2**
DCPCrypt2 is an open-source cryptography library that provides support for a wide range of hash algorithms. It includes the following encryption algorithms as well:
* Blowfish
* Cast 128
* Cast 256
* DES, 3DES
* Ice, Thin Ice, Ice2
* IDEA
* Mars
* Misty1
* RC2, RC4, RC5, RC6
* Rijndael (AES)
* Serpent
* Tea
* Twofish
**Using Generics.Defaults.BobJenkinsHash**
In Delphi 2009 and higher, you can use `BobJenkinsHash` to create hash values for strings:
```
BobJenkinsHash(Value, Length(Value) * SizeOf(Value), 0)
```
Where `Value` is a string.
**Using TurboPower Lockbox**
TurboPower Lockbox supports a variety of hash algorithms, including MD-5, SHA-1, and the SHA-2 family.
**Using Spring for Delphi**
The Spring For Delphi project provides implementations for SHAxxx hashes, the MD5 hash, and CRC functions.
**Using ICS**
ICS provides a variety of MD5 functions for different datatypes and scenarios. It also includes other hash methods like SHA.
**Using System.Hash**
Recent Delphi versions include the `System.Hash` unit, which provides an MD5 hash algorithm:
```
MD5HashCode := THashMD5.GetHashString(ClearTextString);
```