Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

SHA3 Hash to Match Test Vectors

See more Encryption Examples

This example demonstrates SHA3 hashing to match some results published by other implementations.

Note: This example requires Chilkat v9.5.0.83 or greater.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Crypt2;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  crypt: TCrypt2;
  msg: string;

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

  //  This example requires Chilkat v9.5.0.83 or greater.
  crypt := TCrypt2.Create;
  crypt.EncodingMode := 'hexlower';

  //  Input message: "abc", hashing the bytes 0x616263
  //  SHA-3-224:	e642824c3f8cf24a d09234ee7d3c766f c9a3a5168d0c94ad 73b46fdf
  //  SHA-3-256:	3a985da74fe225b2 045c172d6bd390bd 855f086e3e9d525b 46bfe24511431532
  //  SHA-3-384:	ec01498288516fc9 26459f58e2c6ad8d f9b473cb0fc08c25 96da7cf0e49be4b2 98d88cea927ac7f5 39f1edf228376d25
  //  SHA-3-512"	b751850b1a57168a 5693cd924b6b096e 08f621827444f70d 884f5d0240d2712e 10e116e9192af3c9 1a7ec57647e39340 57340b4cf408d5a5 6592f8274eec53f0

  msg := 'abc';
  WriteLn('---- abc ----');
  crypt.HashAlgorithm := 'sha3-224';
  WriteLn(crypt.HashStringENC(msg));
  crypt.HashAlgorithm := 'sha3-256';
  WriteLn(crypt.HashStringENC(msg));
  crypt.HashAlgorithm := 'sha3-384';
  WriteLn(crypt.HashStringENC(msg));
  crypt.HashAlgorithm := 'sha3-512';
  WriteLn(crypt.HashStringENC(msg));

  //  Input Message: "", hashing 0 bytes.
  //  SHA-3-224	6b4e03423667dbb7 3b6e15454f0eb1ab d4597f9a1b078e3f 5b5a6bc7
  //  SHA-3-256	a7ffc6f8bf1ed766 51c14756a061d662 f580ff4de43b49fa 82d80a4b80f8434a
  //  SHA-3-384	0c63a75b845e4f7d 01107d852e4c2485 c51a50aaaa94fc61 995e71bbee983a2a c3713831264adb47 fb6bd1e058d5f004
  //  SHA-3-512	a69f73cca23a9ac5 c8b567dc185a756e 97c982164fe25859 e0d1dcc1475c80a6 15b2123af1f5f94c 11e3e9402c3ac558 f500199d95b6d3e3 01758586281dcd26

  msg := '';
  WriteLn('---- nothing ----');
  crypt.HashAlgorithm := 'sha3-224';
  WriteLn(crypt.HashStringENC(msg));
  crypt.HashAlgorithm := 'sha3-256';
  WriteLn(crypt.HashStringENC(msg));
  crypt.HashAlgorithm := 'sha3-384';
  WriteLn(crypt.HashStringENC(msg));
  crypt.HashAlgorithm := 'sha3-512';
  WriteLn(crypt.HashStringENC(msg));

  //  Input message: "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"
  //  SHA-3-224	543e6868e1666c1a 643630df77367ae5 a62a85070a51c14c bf665cbc
  //  SHA-3-256	916f6061fe879741 ca6469b43971dfdb 28b1a32dc36cb325 4e812be27aad1d18
  //  SHA-3-384	79407d3b5916b59c 3e30b09822974791 c313fb9ecc849e40 6f23592d04f625dc 8c709b98b43b3852 b337216179aa7fc7
  //  SHA-3-512	afebb2ef542e6579 c50cad06d2e578f9 f8dd6881d7dc824d 26360feebf18a4fa 73e3261122948efc fd492e74e82e2189 ed0fb440d187f382 270cb455f21dd185

  WriteLn('---- abcdefg... ----');
  msg := 'abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu';
  crypt.HashAlgorithm := 'sha3-224';
  WriteLn(crypt.HashStringENC(msg));
  crypt.HashAlgorithm := 'sha3-256';
  WriteLn(crypt.HashStringENC(msg));
  crypt.HashAlgorithm := 'sha3-384';
  WriteLn(crypt.HashStringENC(msg));
  crypt.HashAlgorithm := 'sha3-512';
  WriteLn(crypt.HashStringENC(msg));


  crypt.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.