断网、没 SIM 卡为什么照样出码
先给结论
验证码的生成完全发生在这台手机内部:输入是本机存储的密钥(二维码里装了什么)和本机的时钟,运算是本机 CPU 上的一次 HMAC(验证码是怎么算出来的)。网络从头到尾不在参与名单里——所以飞行模式、无 SIM 卡、地下室,码照出。
那网络到底在哪几个环节才出现
把一次完整使用拆开,网络只出现在三处,且都可绕开:
| 环节 | 需要网络吗 | 说明 |
|---|---|---|
| 绑定(扫码) | 不需要摄像头之外的任何网络 | 二维码是面对面传递的 |
| 出码 | 永远不需要 | 本地计算 |
| 登录提交 | 平台要联网(浏览器或其应用) | 与验证器无关 |
| 云同步 / 拉取列表 | 需要 | 关掉同步或用纯本地模式则彻底离线 |
所以「验证器需要网络吗」的精确回答是:只有你选择云同步时才需要,出码本身从来不需要。
飞行模式下的预期行为
开着飞行模式实测,应当观察到:
- 已绑账号的码正常显示、正常每 30 秒刷新;
- 刷新节奏不紊乱——它跟着本机时钟走,与信号无关;
- 云同步图标可能报错或停摆,不影响出码区。
如果你看到的不是这样(比如码不刷新了),先查手机时间不准为什么影响出码——时钟停摆是唯一能打断离线出码的东西。
这个特性的实际价值
- 无信号环境登录:地下室、机舱(落地后)、国际漫游未开通时,短信码发不下来,验证器照样出码;
- 换运营商、销号不影响:码与 SIM 卡无关,与手机号无关;
- 隐私面:出码行为不产生任何网络流量,什么时候谁在登录哪个平台,运营商与中间人无从得知。
离线是特性,不是偶然
回到出码原理的公式:密钥 + 时间 → 码,三个变量全在本机。这套设计在标准制定时就以「服务器无需存储敏感验证状态、客户端无需联网」为目标——验证器只是把这个数学事实装进了几 MB 的应用里。