Sample code for 30+ languages & platforms
PureBasic

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 PureBasic Downloads

PureBasic
IncludeFile "CkCrypt2.pb"
IncludeFile "CkStringBuilder.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This example requires the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.
    ; 
    crypt.i = CkCrypt2::ckCreate()
    If crypt.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Base32 secret key:
    secretKey.s = "oebf ytfl qmzb p4xd 2ztf zyz4 hjrw 3uyo"

    sbKey.i = CkStringBuilder::ckCreate()
    If sbKey.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkStringBuilder::ckAppend(sbKey,secretKey)

    ; Remove SPACE chars.
    numRemoved.i = CkStringBuilder::ckReplace(sbKey," ","")

    ; 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.
    numDigits.i = 6
    ; 30 second time period.
    timePeriod.i = 30
    Debug "Your token is: " + CkCrypt2::ckTotp(crypt,CkStringBuilder::ckGetAsString(sbKey),"base32","0","",timePeriod,numDigits,-1,"sha1")


    CkCrypt2::ckDispose(crypt)
    CkStringBuilder::ckDispose(sbKey)


    ProcedureReturn
EndProcedure