Sample code for 30+ languages & platforms
Delphi DLL

Hash Algorithms: SHA-1, HAVAL, MD2, MD5, SHA-256, SHA-384, SHA-512

See more Encryption Examples

How to create hashes (message digests) for strings.

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Crypt2;

...

procedure TForm1.Button1Click(Sender: TObject);
var
crypt: HCkCrypt2;
s: PWideChar;
hash: PWideChar;

begin
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

crypt := CkCrypt2_Create();

s := 'The quick brown fox jumps over the lazy dog';

CkCrypt2_putHashAlgorithm(crypt,'sha1');
CkCrypt2_putEncodingMode(crypt,'hex');

// Other possible EncodingMode settings are: 
// "quoted-printable", "base64","url", and many more..

hash := CkCrypt2__hashStringENC(crypt,s);
Memo1.Lines.Add('SHA1: ' + hash);

// Hash using MD2
CkCrypt2_putHashAlgorithm(crypt,'md2');
hash := CkCrypt2__hashStringENC(crypt,s);
Memo1.Lines.Add('MD2: ' + hash);

// Hash using MD5
CkCrypt2_putHashAlgorithm(crypt,'md5');
hash := CkCrypt2__hashStringENC(crypt,s);
Memo1.Lines.Add('MD5: ' + hash);

// Note: SHA-2 is a set of cryptographic hash functions (SHA-224, SHA-256, SHA-384, SHA-512)

// Hash using SHA-256
CkCrypt2_putHashAlgorithm(crypt,'sha256');
hash := CkCrypt2__hashStringENC(crypt,s);
Memo1.Lines.Add('SHA256: ' + hash);

// Hash using SHA-384
CkCrypt2_putHashAlgorithm(crypt,'sha384');
hash := CkCrypt2__hashStringENC(crypt,s);
Memo1.Lines.Add('SHA384: ' + hash);

// Hash using SHA-512
CkCrypt2_putHashAlgorithm(crypt,'sha512');
hash := CkCrypt2__hashStringENC(crypt,s);
Memo1.Lines.Add('SHA512: ' + hash);

// Hash using HAVAL
// There are two additional properties relevant to HAVAL:
// HavalRounds, and KeyLength.
// HavalRounds can have values of 3, 4, or 5.
// KeyLength can have values of 128, 160, 192, 224, or 256
CkCrypt2_putHashAlgorithm(crypt,'haval');
CkCrypt2_putHavalRounds(crypt,5);
CkCrypt2_putKeyLength(crypt,256);
hash := CkCrypt2__hashStringENC(crypt,s);
Memo1.Lines.Add('Haval: ' + hash);

// Hashes for "The quick brown fox jumps over the lazy dog"

// SHA1:
// 2FD4E1C67A2D28FCED849EE1BB76E7391B93EB12

// MD2:
// 03D85A0D629D2C442E987525319FC471

// MD5:
// 9E107D9D372BB6826BD81D3542A419D6

// SHA256:
// D7A8FBB307D7809469CA9ABCB0082E4F8D5651E46D3CDB762D02D0BF37C9E592

// SHA384:
// CA737F1014A48F4C0B6DD43CB177B0AFD9E5169367544C494011E3317DBF9A509CB1E5DC1E85A941BBEE3D7F2AFBC9B1

// SHA512:
// 07E547D9586F6A73F73FBAC0435ED76951218FB7D0C8D788A309D785436BBB642E93A252A954F23912547D1E8A3B5ED6E1BFD7097821233FA0538F3DB854FEE6

// Haval:
// B89C551CDFE2E06DBD4CEA2BE1BC7D557416C58EBB4D07CBC94E49F710C55BE

CkCrypt2_Dispose(crypt);

end;