TOTP Code Generator
Generate time-based one-time passwords (TOTP) compatible with Google Authenticator.
Current Code
------
Expires in 30s
Next Code
------
Compatible with Google Authenticator, Authy, and other TOTP apps. Add this secret to your authenticator app to verify codes.
Frequently Asked Questions
Code Implementation
import hmac, hashlib, struct, time, base64
def hotp(secret_b32: str, counter: int, digits: int = 6) -> str:
"""HMAC-based One-Time Password (RFC 4226)."""
key = base64.b32decode(secret_b32.upper().replace(" ", ""))
msg = struct.pack(">Q", counter) # 8-byte big-endian counter
h = hmac.new(key, msg, hashlib.sha1).digest()
offset = h[-1] & 0x0F
code = struct.unpack(">I", h[offset:offset+4])[0] & 0x7FFFFFFF
return str(code % (10 ** digits)).zfill(digits)
def totp(secret_b32: str, digits: int = 6, period: int = 30) -> str:
"""Time-based One-Time Password (RFC 6238)."""
counter = int(time.time()) // period
return hotp(secret_b32, counter, digits)
def totp_remaining_seconds(period: int = 30) -> int:
"""Seconds until the current TOTP window expires."""
return period - (int(time.time()) % period)
# Demo β replace with your own base32 secret
SECRET = "JBSWY3DPEHPK3PXP"
print(f"TOTP: {totp(SECRET)} (expires in {totp_remaining_seconds()}s)")Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.