Sample code for 30+ languages & platforms
DataFlex

Generate TOTP using Base32 Secret (6 Digits, Time-based, 30-second period)

See more Encryption Examples

Generates a 6-digit time-based TOTP code using a base32 secret with a 30-second time period.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoCrypt
    String sSecretKey
    Handle hoSbKey
    Integer iNumRemoved
    Integer iNumDigits
    Integer iTimePeriod
    String sTemp1

    Move False To iSuccess

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.
    // 
    Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt
    If (Not(IsComObjectCreated(hoCrypt))) Begin
        Send CreateComObject of hoCrypt
    End

    // Base32 secret key:
    Move "oebf ytfl qmzb p4xd 2ztf zyz4 hjrw 3uyo" To sSecretKey

    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbKey
    If (Not(IsComObjectCreated(hoSbKey))) Begin
        Send CreateComObject of hoSbKey
    End
    Get ComAppend Of hoSbKey sSecretKey To iSuccess

    // Remove SPACE chars.
    Get ComReplace Of hoSbKey " " "" To iNumRemoved

    // Note: A new token is generated every 30 seconds.  You must generate within the same 30 second interval to get the same result.

    // Generate 6 digits.
    Move 6 To iNumDigits
    // 30 second time period.
    Move 30 To iTimePeriod
    Get ComTotp Of hoCrypt (ComGetAsString(hoSbKey)) "base32" "0" "" iTimePeriod iNumDigits -1 "sha1" To sTemp1
    Showln "Your token is: " sTemp1


End_Procedure