我想编写像Authy或Google Authentificator这样的JavaScript应用程序。遗憾的是,我没有找到任何信息如何计算实际PIN(一次性密码)的密钥以将其用于登录。
我知道,我必须将此密钥与实际时间戳一起使用,但不知道如何组合密钥和时间戳,然后生成Google Authentificator和Authy可以生成的6位数字OTP。
如果我在Google中激活2因素身份验证,我会得到一个QR码,会产生这样的链接
otpauth://totp/Google%3Asome.name%40googlemail.com?secret=x6wup537ptmmohbjkczluxit4r6eppfc&issuer=Google
所以 x6wup537ptmmohbjkczluxit4r6eppfc 是密钥。我必须做些什么,才能从中获取OTP,这实际上可以与Google帐户一起登录?
最好的问候,谢谢 kaiserkiwi
答案 0 :(得分:1)
我从搜索结果中提出了这个问题,因为我正在寻找一个图书馆,该图书馆可以解决(从标题中)提出的问题。经过更多搜索后,我找到了一个可以执行此操作的npm模块-https://www.npmjs.com/package/otplib。如果您观看该演示,则会看到它为您提供了令牌。从该模块的文档中,您可以看到为了获取图钉,您可以使用:
const token = authenticator.generate(secret);
答案 1 :(得分:0)
您可能想查看RFC-6238,其中介绍了基于时间的一次性密码算法。