如何确定TOTP令牌倒计时的剩余有效时长?
计算TOTP令牌剩余过期秒数的问题
我正在开发一个小型应用,用来学习OTP相关概念,实现HOTP与TOTP令牌的生成和验证。目前卡在了计算任意时刻TOTP令牌剩余过期秒数(即MFA移动应用中显示的倒计时数值)的公式上。
RFC6238第4节仅给出公式:TOTP = HOTP(K, T),但我无法在实践中验证这一逻辑。
参考资料:TOTP算法、HOTP算法
我先通过一个带详细注释的Vanilla JavaScript示例(共42行),用静态值测试TOTP算法的各个组成部分,每个部分都配有对应的变量或公式说明。我的目标是得到一个合理的整数,代表令牌过期前的剩余时长。
但当使用静态值T=now()、T0=0和X=30时,运行公式const Ct = Math.floor((T-T0) / X)得到的结果是57075351,显然不符合预期。
之后我又实现了一个基础Angular项目,用来集成OTPAuth功能。
参考资料:OTPAuth GitHub项目、OTPAuth的NPM包、OTPAuth官方文档
内容的提问来源于stack exchange,提问作者mrjonleek
相关产品推荐
相关产品推荐

