OTP 是什么?一次性密码、动态验证码和 TOTP 的关系详解
最后更新:2026/9/12
OTP(One-Time Password)是一次性密码,中文也叫动态口令,或叫动态验证码。你登录银行收到的短信验证码、校园网和公司 VPN 要求输入的 6 位数字、谷歌验证器里每 30 秒变一次的码,都属于 OTP。
固定密码一旦泄露,别人可以反复使用。OTP 则不同:每次只生成一个新码,用完作废,过期也作废。就算黑客拿到了你的密码,只要拿不到当下的动态码,仍然登不进账号。
OTP 的两条生成路线
OTP 不是一个具体产品,而是一类验证码的统称。同样叫一次性密码,码的来源分两条路线。
第一条:服务器生成,通过渠道发给你。 短信验证码、邮件验证码、语音播报的验证码都属于这类。服务器随机生成一个码,通过短信或邮件发送给你。码不在你手里,你只是接收它。
第二条:在设备本地算出来。 硬件令牌和验证器 App 属于这类。绑定账号时,平台给你一个二维码,里面是一段共享密钥。你的设备保存这段密钥,用它和当前时间做运算,本地算出验证码。全程不需要联网收码。
| 对比 | 服务器下发(短信/邮件) | 本地生成(TOTP 验证器) |
|---|---|---|
| 码的来源 | 服务器随机生成,通过渠道发送 | 设备用共享密钥和当前时间计算 |
| 是否联网 | 依赖运营商或邮件通道 | 不需要,断网也能出码 |
| 有效期 | 通常 5-10 分钟 | 通常 30 秒 |
| 典型场景 | 银行转账、国内 App 登录 | GitHub、OpenAI、Shopify、VPN |
两条路线的核心区别是:码是发给你的还是你自己算出来的。这决定了它们对网络的依赖、被拦截的风险,以及换设备时的迁移成本。
国内用短信,海外用 TOTP
在国内,短信验证码仍然是 OTP 的主流形式。银行转账、支付宝支付、微信登录,都是服务器生成一个码,通过短信发给你。国内运营商通道稳定,到达率高,用户体验也熟悉。大部分场景下短信已经够用。
但在海外平台上,TOTP(Time-based One-Time Password,基于时间的一次性密码)才是主流选择。原因有两个:
- 跨国短信贵且不可靠。延迟、丢失、被拦截都经常发生。TOTP 不依赖运营商,不联网也能出码。
- 平台不掌握你的手机号。海外账号体系通常以邮箱为主,没有手机号可以发短信。验证器 App 是唯一可行的第二因素方案。
谷歌身份验证器、Microsoft Authenticator、free2fa二次验证码小程序,都是这类 TOTP 验证器。GitHub、OpenAI、Shopify 这些平台的安全设置里看到“验证器应用”选项,指的就是 TOTP。
你在什么场景会用到 OTP
注册 OpenAI、Google 等海外平台。 注册完成后,平台会要求开启两步验证。选项里通常有验证器应用。绑定后,每次登录要输入 TOTP 动态码。安卓手机没有谷歌服务框架(GMS)时,装不上谷歌验证器,需要另找一个能直接用的 OTP 工具。
跨境电商店铺的安全防护。 Shopify、亚马逊卖家的店铺账号背后挂着资金和客户数据。平台普遍要求开启 2FA。手机丢失、误删应用、员工离职都可能导致密钥丢失,账号可能被锁。管理多个平台的验证密钥时,能备份、能找回的 OTP 工具是刚需。
高校和企业的内网 VPN。 登录校园网或公司 VPN 时,系统要求输入动态口令。为了一个 6 位码专门下载一个几百兆的客户端 App,很多人不愿意。在电脑上登录时,还要掏出手机看码再手动输入,效率不高。
这三个场景的共同点是:平台要你用一个 OTP 工具自己生成验证码,而不是靠短信收。需要选一个 TOTP 验证器时,推荐微信小程序 free2fa二次验证码:
- 免安装免下载,微信里打开就用,不用额外下载 App
- 密钥数据高强度加密后云端备份,换手机不丢
- 自带数据回收站,误删也能随时找回
- 电脑版微信也能打开,验证码支持点击复制,不用掏手机
- 支持批量导入谷歌验证器的密钥数据,老用户可以无缝迁移

账号安全建议
OTP 是一次性密码的统称,短信验证码和 TOTP 动态验证码都属于 OTP。国内日常场景用短信就够了,需要对接 GitHub、OpenAI 这类海外平台时,推荐微信小程序 free2fa二次验证码,免安装、云端备份、不怕丢。

参考资料
- RFC 4226: HMAC-Based One-Time Password Algorithm (HOTP),
https://tools.ietf.org/html/rfc4226
