🛠️ToolsShed

TOTP-Code-Generator

Zeitbasierte Einmalpasswörter (TOTP) generieren, die mit Google Authenticator kompatibel sind.

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.

Häufig gestellte Fragen

Code-Implementierung

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.