Sample code for 30+ languages & platforms
Lua

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

Lua
local chilkat = require("chilkat")

-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
--
local crypt = chilkat.Crypt2.new()

-- Base32 secret key:
local secretKey = "oebf ytfl qmzb p4xd 2ztf zyz4 hjrw 3uyo"

local sbKey = chilkat.StringBuilder.new()
local success = sbKey:append(secretKey)

-- Remove SPACE chars.
local numRemoved = sbKey: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.
local numDigits = 6
-- 30 second time period.
local timePeriod = 30
print("Your token is: " .. crypt:totp(sbKey:get_as_string(), "base32", "0", "", timePeriod, numDigits, -1, "sha1"))