双因素身份验证应用程序如何生成代码?

问题描述 投票:0回答:2

我正在尝试为私人应用程序复制 Authy/Google Authenticator 的功能。我应该使用什么算法从已知秘密中获取 6 或 8 位 2fa 代码?有这个的开源包吗?

two-factor-authentication
2个回答
4
投票

这些是使用基于时间的一次性密码 (TOTP) 算法生成的。 RFC https://datatracker.ietf.org/doc/html/rfc6238。根据您首选的编程语言,有许多可用的软件包。 (您可以在谷歌上搜索

TOTP <your language>
来查找执行此操作的软件包)

一旦获得密钥,就可以根据当前时间生成 OTP。


0
投票

在 Python 中,这非常简单。其他语言可能类似。

首先,通过

pyotp
安装
pip3
软件包。 (或者对于基于 Debian 的系统,有一个
apt
软件包
python3-pyotp

然后,创建一个像这样的小程序:

import pyotp
totp = pyotp.TOTP('{16 or 32 character secret}')
print(totp.now())

要填写秘密,您需要为您正在使用的系统完成新应用程序注册过程,并告诉它您无法扫描它为您提供的二维码。然后,它将显示该秘密以及其他信息,例如不相关的帐户名称。您只需要由一串看似随机的字符组成的实际密钥。

一旦获得密钥,请将其替换为上面的代码,不带大括号但带引号。

然后你可以运行该程序,它会打印你的基于时间的代码。请注意,必须在您的计算机上设置日期/时间才能使其工作。

© www.soinside.com 2019 - 2024. All rights reserved.