01. TOTPの数式とPython実装
import hmac import hashlib import time import struct import base64def generate_totp(secret: str, interval: int = 30) -> str: key = base64.b32decode(secret.replace(” ”, "").upper()) counter = int(time.time()) // interval msg = struct.pack(“>Q”, counter) digest = hmac.new(key, msg, hashlib.sha1).digest() offset = digest[-1] & 0x0F code = struct.unpack(“>I”, digest[offset:offset+4])[0] & 0x7FFFFFFF return str(code % 1000000).zfill(6)
if name == “main”: print(“生成されたTOTPコード:”, generate_totp(“JBSWY3DPEHPK3PXP”))