💻 الهندسة التشفيرية البرمجية & معايير IETF · 12 دقيقة قراءة

كيف تعمل خوارزمية TOTP: تطبيق معيار RFC 6238 بلغات بايثون وجافاسكريبت وغو

رحلة رياضية وتشفيرية كاملة: فك ترميز Base32، حساب الفاصل الزمني 30 ثانية، تجزئة HMAC-SHA1، الاقتطاع الديناميكي Dynamic Truncation واستخراج 6 أرقام مع كود برمجي تطبيقي كامل.

01. البنية الرياضية لمعيار RFC 6238

تعتمد خوارزمية TOTP (كلمة المرور لمرة واحدة المعتمدة على الوقت) على حساب عدد الفواصل الزمنية المكونة من 30 ثانية المنقضية منذ Epoch (1 يناير 1970 UTC). يتم تمرير هذا العداد الزمني مع المفتاح السري المشترك إلى دالة HMAC-SHA1 لإنتاج تجزئة 20 بايت، ثم يُطبق عليها الاقتطاع الديناميكي لاستخراج رمز مكون من 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. Decode base32 secret

key = base64.b32decode(secret_base32.replace(” ”, "").upper())

2. Calculate time step

time_step = int(time.time()) // interval msg = struct.pack(“>Q”, time_step)

3. HMAC-SHA1 hash

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. Extract 6 digits

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 التابعة للمتصفح دون استدعاء أي خوادم خارجية، مما يضمن بقاء المفاتيح السرية في ذاكرة الوصول العشوائي للعميل فقط.