注意:这篇文章上次更新于782天前,文章内容可能已经过时。
背景
这是一个完全由 AI 编写的小工具,用于生成 TOTP 密钥。
让我来详细解释一下它是用来干什么的。
简单来说,就是为了解决下面这个问题的:

两三年前,手机下载了微软的 Authenticator,然后我的微软账号每次登录就一直要求我用 Authenticator 来认证。我当时就在想,如果我手机丢了怎么办,还有什么办法找回我的账号吗?
网上搜索了一圈,得到的结论基本就是“极其困难”。
于是,我便开始小心翼翼的维护这个软件,中间换了一次手机,我也是把 Authenticator 的数据迁移过去,以免丢失。
但是,这还是没有解决那个问题:如果我手机丢了呢?
后来,我发现了这个项目:https://github.com/Bubka/2FAuth
A web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes
这个项目可以用来生成二步验证的验证码,而且重点是 “web app”,也就是说,它不再依赖我的手机,只要我把它在电脑或者服务器上运行起来,我就可以随时随地的获取到我的验证码而不用担心手机丢失。
(当然,你需要对这样重要的数据进行备份,毕竟即使是电脑和服务器也是会坏的。)
在查询这个项目怎么应用的过程中,我发现了另一个专业的密码管理器也能用于生成二步验证的验证码,那就是 Bitwarden。
它有一个非官方的开源实现:https://github.com/dani-garcia/vaultwarden
那么更进一步的问题是,他们是怎么生成这些验证码的呢?
答案就是 TOTP。
TOTP 是 Time-based One-Time Password 的缩写,即基于时间的一次性密码。它是一种用于身份验证的算法,通常用于多因素身份验证(MFA)。
也就是说,它根据一个输入的密钥(也就是一个字符串)和当前的时间戳生成一个一次性的密码,微软,甲骨文,谷歌… 等等几乎所有国外的公司都在使用这种算法。
无论是甲骨文云的验证器、GitHub 的验证器、微软的验证器、谷歌的验证器,都是基于这个算法的一个 APP 而已。
当这些国外网站要求我们开启两步验证的时候,你需要点击一些非推荐性的选项,例如:我不能下载 APP,我不能扫描二维码,我选择手动输入密钥 等等
然后你就会获得一个 TOTP 密钥,像是这样的字符串:JBSWY3DPEHPK3PXP
把它输入到这里,你就获得了一个验证码。

你需要保存好你的密钥,因为这个密钥是生成验证码的唯一凭证。
注意它是 Time-based 的算法,使用它请确保你的设备时间准确。
30s 的刷新周期和 6 位的验证码是默认的设置,绝大多数情况不需要修改。
代码
1 | <style> |


