Delphi DLL
Delphi DLL
TOTP Authenticator: Duplicate Results of Online Tools
See more Encryption Examples
Duplicates the online tool for the Google 2FA Authenticator online tools atChilkat Delphi DLL Downloads
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;
secretKey: PWideChar;
begin
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
//
// Note: This example was written on 7-March-2020. If the online tools have since changed, the instructions provided here may no longer be valid.
//
crypt := CkCrypt2_Create();
// ---------------------------------------------------------------------------------------------
// To duplicate the results of the Authenticator Test at https://rootprojects.org/authenticator/
// do the following:
// 1) At the bottom of the screen you will see a URI such as:
//
// otpauth://totp/ACME%20Co:john@example.com?secret=HXDMVJECJJWSRB3HWIZR4IFUGFTMXBOZ&issuer=ACME%20Co&algorithm=SHA1&digits=6&period=30
//
// Use the uppercase secret. For example:
secretKey := 'HXDMVJECJJWSRB3HWIZR4IFUGFTMXBOZ';
// 2) DO NOT cick the "Regenerate" button. The regenerate button will generate a new secret.
//
// 3) Run the following code to generate your 6-digit token. Compare with the token shown in the picture of the iPhone at https://rootprojects.org/authenticator/
// Note: A new token is generated every 30 seconds. You must generate within the same 30 second interval to get the same result.
Memo1.Lines.Add('Your token is: ' + CkCrypt2__totp(crypt,secretKey,'base32','0','',30,6,-1,'sha1'));
// ---------------------------------------------------------------------------------------------
// To duplicate the results of the Google2FA Playground at https://pragmarx.com/playground/google2fa#/
// do the following:
// 1) Copy the 64-byte secret key:
secretKey := 'OR2VQTRVHB2HO2LCGVWXQSCDK5ZHQS2D3THQ6UXO57XIE7ZHOWS6HDPQ622GU747';
// 2) Run the same code:
// (Note: The online tool generates a new result every 30 seconds. You must generate and compare within the same 30-second interval.)
Memo1.Lines.Add('Your token is: ' + CkCrypt2__totp(crypt,secretKey,'base32','0','',30,6,-1,'sha1'));
CkCrypt2_Dispose(crypt);
end;