標準 RFC 6238 測試向量
本頁表格列出 RFC 6238 Appendix B 公開的固定 Unix 時間戳 8 位 TOTP 預期輸出。你可以不用真實 2FA 帳號,就檢查 SHA-1、SHA-256 和 SHA-512 實作是否正確。
本指南把公開的 RFC 6238 TOTP 測試向量和簡單示範 secret 放在一起,方便你在使用真實帳號設定金鑰前,測試 Authenticator 應用程式、本機 2FA 產生器或 TOTP 程式庫。它可以幫助排查 algorithm、digits、period、裝置時間和 otpauth 參數不一致的問題。
本頁表格列出 RFC 6238 Appendix B 公開的固定 Unix 時間戳 8 位 TOTP 預期輸出。你可以不用真實 2FA 帳號,就檢查 SHA-1、SHA-256 和 SHA-512 實作是否正確。
把你的 TOTP 實作設定為對應 hash 演算法的 RFC 測試 secret、8 位驗證碼和 30 秒週期,然後在每個列出的 Unix 時間戳比較產生值和預期輸出。
用於非敏感測試時,可以使用公開 Base32 設定金鑰 JBSWY3DPEHPK3PXP,並設定 SHA-1、6 位驗證碼和 30 秒週期。這個金鑰只用於測試行為,不能用於保護真實帳號。
對應的 otpauth URI 是 otpauth://totp/2FA%20Test:test-token?secret=JBSWY3DPEHPK3PXP&issuer=2FA%20Test&algorithm=SHA1&digits=6&period=30。裝置時間一致時,相容應用程式應產生相同的目前驗證碼。
把示範金鑰貼到本站本機產生器,再把同一個金鑰作為手動設定金鑰加入你的 Authenticator 應用程式。在同一個 30 秒窗口內對比目前 6 位驗證碼。
檢查裝置時間、時區、algorithm、digits、period,以及應用程式中保存的 Base32 secret 是否完全相同。多數不一致來自時間漂移,或複製時漏掉、改錯了某個字元。
不要公開或分享真實 2FA 設定金鑰。測試真實帳號時,優先使用 #secret= fragment 快捷方式,因為 fragment 留在瀏覽器中,不會隨 HTTP 請求傳送。
本機 token 測試可以確認 TOTP 計算是否相容,但不能證明某個帳號一定接受該驗證碼,不能恢復遺失的 2FA,也不能批准推送登入、產生簡訊、電子郵件、Passkey 或恢復碼。
這些公開的 RFC 6238 Appendix B 測試向量使用 8 位 TOTP 值,涵蓋 SHA-1、SHA-256 和 SHA-512,可用於檢查 TOTP 產生器、Authenticator 應用程式或程式庫是否符合標準演算法。
| Unix 時間 | UTC 時間 | SHA-1 預期 TOTP | SHA-256 預期 TOTP | SHA-512 預期 TOTP |
|---|---|---|---|---|
59 | 1970-01-01 00:00:59 UTC | 94287082 | 46119246 | 90693936 |
1111111109 | 2005-03-18 01:58:29 UTC | 07081804 | 68084774 | 25091201 |
1111111111 | 2005-03-18 01:58:31 UTC | 14050471 | 67062674 | 99943326 |
1234567890 | 2009-02-13 23:31:30 UTC | 89005924 | 91819424 | 93441116 |
2000000000 | 2033-05-18 03:33:20 UTC | 69279037 | 90698825 | 38618901 |
20000000000 | 2603-10-11 11:33:20 UTC | 65353130 | 77737706 | 47863826 |
TOTP 測試向量是一組已知輸入和預期輸出,用於驗證實作是否正確。RFC 6238 測試向量固定了時間戳、hash 演算法、位數和 secret,方便其他實作精確對比。
不可以。示範 secret 是公開的,絕不能用於保護真實帳號。它只適合檢查兩個 TOTP 產生器是否能算出相同驗證碼。
最常見原因是裝置時間偏差、period 不同、digits 不同、algorithm 不同,或複製後的 secret 與原始設定金鑰不完全一致。
不能。這個工具專注於貼上 Base32 設定金鑰和 otpauth://totp/ 連結。如果帳號只顯示 QR code,請優先查找該服務是否提供手動設定金鑰。
是。TOTP 驗證碼計算在瀏覽器本機執行。真實 secret 請避免放在 path 和 query URL 中,建議使用 #secret=YOUR_BASE32_SECRET 這種 fragment 快捷方式。