Sample code for 30+ languages & platforms
Lazarus Pascal

Hash (Digest) a String

Hash the bytes of a string.

Chilkat Lazarus Pascal Downloads

Lazarus Pascal
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.StringBuilder;

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

procedure RunDemo;
var
  sb: TStringBuilder;
  sha256_hex: string;
  sha384_hex: string;
  sha512_base64: string;
  sha1_hex: string;
  crc8_decimal: string;

begin
  sb := TStringBuilder.Create;

  sb.Append('Hello World');

  //  Hashing algorithms (i.e. digest algorithms) operate on raw bytes.
  //  Therefore, we must specify the character encoding (utf-8, utf-16, iso-8859-1, etc.) to be used when hashing.

  //  Get the SHA256 hash in hex
  sha256_hex := sb.GetHash('sha256','hex','utf-8');
  WriteLn('SHA256: ' + sha256_hex);

  //  Get the SHA384 hash in hex lowercase
  sha384_hex := sb.GetHash('sha384','hex_lower','utf-8');
  WriteLn('SHA384: ' + sha384_hex);

  //  Get the SHA512 hash in base64
  sha512_base64 := sb.GetHash('sha512','base64','utf-8');
  WriteLn('SHA512: ' + sha512_base64);

  //  Get the SHA1 hash in hex lowercase
  sha1_hex := sb.GetHash('sha1','hex_lower','utf-8');
  WriteLn('SHA1: ' + sha1_hex);

  //  Get the CRC8 digest in decimal
  crc8_decimal := sb.GetHash('crc8','decimal','utf-8');
  WriteLn('CRC8: ' + crc8_decimal);


  sb.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.