⑴ TOTP基本原理
TOTP 是Time-based One-Time Password的簡寫,表示基於時間戳演算法的一次性密碼。 是時間同步,基於客戶端的動態口令和動態口令驗證伺服器的時間比對,一般每60秒,或30秒產生一中族個新口令,要求客戶端和伺服器能夠十分賣枝弊精確的保持正確的時鍾,客戶端和服務端基於時間計算的動態口令才能一致。
K,密鑰串 HMAC-SHA-1, 表示使用SHA-1做HMAC(當然也可以使用SHA-256等)
C,基於時間戳計算得出,通過定義紀元(T0)的開始並以時間搭辯間隔(TI)為單位計數,將當前時間戳變為整數時間計數器(TC)
Truncate,是一個函數,用於截取加密後的字元串
T,當前的時間戳 T0,起始時間,一般為0 T1,時間間隔,根據業務需要自定義
python實現
上面的代碼就是我基於python3的實現(可以保存為totp.py),散列演算法使用的是SHA-256,使用方式如下: