Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Google Authenticator Algorithm
See more Encryption Examples
Example code implementing the Google Authenticator algorithm.Chilkat Pascal (Lazarus/Delphi) 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.Crypt2;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
secretBase32: string;
crypt: TCrypt2;
otp: string;
begin
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// Generating TOTP Base32 Secret:
// When you enable 2FA with a TOTP-based authenticator app, Google will provide you with a QR code
// that you can scan using the app. This QR code contains a TOTP base32 secret.
// You can also choose to view and copy the secret manually.
secretBase32 := 'JBSWY3DPEHPK3PXP';
// Do the following to calculate the 6-digit decimal Google authenticator token for a base32 secret,
// given the current system date/time.
crypt := TCrypt2.Create;
otp := crypt.Totp(secretBase32,'base32','0','',30,6,-1,'sha1');
WriteLn('6-digit decimal token = ' + otp);
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.