谷歌认证-TOTP检查剩余秒数



基于时间(20秒有效期(的谷歌身份验证代码,我需要在读取4位代码之前检查时间。

  1. 使用TOTP收集谷歌身份验证代码
  2. 在我们的应用程序中自动应用代码

问题,在边缘读取-代码时(18/19秒(,并将代码自动发送到我们的文本框,但有效期已过期,身份验证失败。所以我想检查代码和有效时间

a。如果有效时间超过10秒,我可以获得代码并将其传递到文本框b.如果有效时间小于10秒,等待10秒

代码:

public static String getTOTPCode(String secretKey) {
String normalizedBase32Key = secretKey.replace(" ", "").toUpperCase();
Base32 base32 = new Base32();
byte[] bytes = base32.decode(normalizedBase32Key);
String hexKey = Hex.encodeHexString(bytes);           
return TOTP.getOTP(hexKey);
}

Jar文件

commons-code1.8 jar
totp-1.0 jar

请参阅以上内容,并让我知道如何获得OTP的有效时间?

请参阅有关TOTP的信息。无论如何,服务器通常应允许从±1时间间隔开始的代码。因此,你很可能不必担心这种人为的延误。

除此之外,根据TOTP参数,您应该知道下一个时间间隔的跳闸点是什么时候。所以你可以根据当前时间来检查你离跳闸点有多近。

附言:我听说一些服务器会根据客户端以前的身份验证尝试调整时间计算,这样客户端/服务器的时间偏移就不会破坏身份验证。例如,当客户端机器不使用NTP,因此时钟关闭时。

更新:关于生成时间戳TOTP:秒计数吗?

最新更新