Lazarus Pascal
Lazarus Pascal
Hash (Digest) a String
Hash the bytes of a string.Chilkat Lazarus Pascal Downloads
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.