如何在JavaScript中将otpauth密钥转换为otp pin?

时间:2015-12-08 14:57:27

标签: javascript encryption windows-store-apps password-protection one-time-password

我想编写像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

2 个答案:

答案 0 :(得分:1)

我从搜索结果中提出了这个问题,因为我正在寻找一个图书馆,该图书馆可以解决(从标题中)提出的问题。经过更多搜索后,我找到了一个可以执行此操作的npm模块-https://www.npmjs.com/package/otplib。如果您观看该演示,则会看到它为您提供了令牌。从该模块的文档中,您可以看到为了获取图钉,您可以使用:

const token = authenticator.generate(secret);

答案 1 :(得分:0)

您可能想查看RFC-6238,其中介绍了基于时间的一次性密码算法。