首頁

TOTP 和 HOTP 的差異

TOTP 和 HOTP 都是一次性密碼演算法。本指南說明基於時間和基於計數器的 OTP 驗證碼在實際使用中的差異,以及為什麼多數 Authenticator 設定金鑰使用 TOTP。

TOTP 是什麼意思

TOTP 表示 time-based one-time password,也就是基於時間的一次性密碼。它使用共享 secret 和目前時間步,通常是 30 秒,產生目前 Authenticator 驗證碼。

HOTP 是什麼意思

HOTP 表示 HMAC-based one-time password。它不使用目前時間,而是使用一個每次產生或驗證後變化的計數器。

實際差異

TOTP 驗證碼會隨著時間前進而過期,HOTP 驗證碼則依賴客戶端和服務端計數器同步。如果 HOTP 計數器偏移,可能需要重新同步。

Authenticator 應用程式的預設方式

現代 Authenticator 設定頁面和 otpauth://totp/ QR code 多數使用 TOTP。沒有特別說明時,常見參數是 SHA-1、6 位和 30 秒週期。

本工具支援什麼

本站專注於 2FA 和 MFA 使用的 TOTP 設定金鑰。它不產生 HOTP 計數器驗證碼、簡訊驗證碼、電子郵件驗證碼、推送確認或恢復碼。

標準與參考資料

常見問題

Google Authenticator 用的是 TOTP 還是 HOTP?

很多相容 Google Authenticator 的設定使用 TOTP。某些系統也可能支援 HOTP,但本網頁工具專注於 otpauth://totp/ 和 Base32 TOTP 設定金鑰。

可以把 HOTP secret 放進這個 TOTP 產生器嗎?

不可以。HOTP 需要計數器值,而本產生器計算的是基於時間的 TOTP 驗證碼。如果服務明確提供 HOTP 設定,請使用支援 HOTP 的工具。

為什麼大多數 2FA 驗證碼每 30 秒變化?

這是常見 TOTP 週期。驗證碼由共享 secret 和目前時間視窗產生,因此時間視窗變化時驗證碼也會變化。

如何判斷 otpauth 連結是不是 TOTP?

TOTP 設定連結通常以 otpauth://totp/ 開頭。HOTP 設定連結通常以 otpauth://hotp/ 開頭,並依賴計數器相關行為。