🔐 IETF標準規格 & 暗号工学

TOTPの仕組みを徹底解剖:RFC 6238アルゴリズムをPython・JS・Goで実装する

Base32デコード、30秒タイムステップ、HMAC-SHA1ハッシュ計算、Dynamic Truncation(動的切り捨て)から6桁コードの導出までを数式とコードで完全解説。

01. TOTPの数式とPython実装

import hmac
import hashlib
import time
import struct
import base64

def 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”))