2FA-Tool Logo
2FA-Tool.com เครื่องมือ 2FA ออฟไลน์ที่ปลอดภัย
💻 วิศวกรรมการเข้ารหัส & มาตรฐาน IETF · อ่าน 12 นาที

TOTP ทำงานอย่างไร: การเขียนโค้ดอัลกอริทึม RFC 6238 ด้วย Python, JavaScript และ Go

เจาะลึกวิทยาการรหัสลับ: การถอดรหัส Base32, การคำนวณคาบเวลา 30 วินาที, การแฮช HMAC-SHA1, การตัดทอนแบบไดนามิก และการสร้างรหัส 6 หลักพร้อมโค้ดที่รันได้จริง

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 base64

def 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%