01. โครงสร้างทางคณิตศาสตร์ของมาตรฐาน RFC 6238
อัลกอริทึม TOTP (Time-Based One-Time Password) ทำงานโดยการคำนวณจำนวนช่วงเวลา 30 วินาทีที่ผ่านไปนับตั้งแต่จุดเริ่มต้นของระบบเวลา Unix (1 มกราคม 1970 UTC) ค่าตัวนับนี้จะถูกนำไปแฮชร่วมกับคีย์ลับร่วมด้วยฟังก์ชัน HMAC-SHA1 ได้ผลลัพธ์เป็น Digest ขนาด 20 ไบต์ จากนั้นใช้วิธี Dynamic Truncation เพื่อคัดเลือกตัวเลข 6 หลักออกมา
02. การเขียนโค้ด TOTP ด้วยภาษา Python
import hmac import hashlib import time import struct import base64def get_totp(secret_base32: str, interval: int = 30) -> str:
1. ถอดรหัสคีย์ Base32
key = base64.b32decode(secret_base32.replace(” ”, "").upper())
2. คำนวณช่วงเวลา
time_step = int(time.time()) // interval msg = struct.pack(“>Q”, time_step)
3. แฮช HMAC-SHA1
digest = hmac.new(key, msg, hashlib.sha1).digest()
4. การตัดทอนแบบไดนามิก (Dynamic Truncation)
offset = digest[-1] & 0x0F code_int = struct.unpack(“>I”, digest[offset:offset+4])[0] & 0x7FFFFFFF
5. สกัดรหัสตัวเลข 6 หลัก
return str(code_int % 1000000).zfill(6)
if name == “main”: print(“รหัส TOTP ปัจจุบัน:”, get_totp(“JBSWY3DPEHPK3PXP”))
03. การทำงานบนเบราว์เซอร์ด้วย JavaScript Web Crypto API
เว็บไซต์ 2FA-Tool ใช้มาตรฐาน Web Crypto API ประมวลผลรหัสทั้งหมดในเครื่องของผู้ใช้โดยไม่มีการส่งข้อมูลคีย์ลับไปยังเซิร์ฟเวอร์ภายนอก ทำให้มั่นใจได้ในเรื่องความปลอดภัยและความเป็นส่วนตัว 100%