Sample code for 30+ languages & platforms
Xbase++

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 Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oCrypt
LOCAL cSecretKey
LOCAL oSbKey
LOCAL nNumRemoved
LOCAL nNumDigits
LOCAL nTimePeriod

nSuccess := 0

//  This example requires the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.
//  
oCrypt := CreateObject("Chilkat.Crypt2")

//  Base32 secret key:
cSecretKey := "oebf ytfl qmzb p4xd 2ztf zyz4 hjrw 3uyo"

oSbKey := CreateObject("Chilkat.StringBuilder")
nSuccess := oSbKey:Append(cSecretKey)

//  Remove SPACE chars.
nNumRemoved := oSbKey:Replace(" ", "")

//  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.
nNumDigits := 6
//  30 second time period.
nTimePeriod := 30
? "Your token is: " + oCrypt:Totp(oSbKey:GetAsString(), "base32", "0", "", nTimePeriod, nNumDigits, -1, "sha1")

oCrypt:destroy()
oSbKey:destroy()