totp = pyotp.TOTP("base32secret3232")
totp.at(time.time(),60)
print("Current OTP:", totp.now())
otp=totp.now()
text='Your OTP is ' + totp.now()
print totp.verify(otp)
time.sleep(32)
print totp.verify(otp)
我想将间隔从默认值30更改为60.我应该在time.sleep(32)之前和之后获得True输出,但我得到以下输出。
答案 0 :(得分:1)
我想,你想用;
...
print totp.verify(otp, valid_window=1)
time.sleep(32)
print totp.verify(otp, valid_window=1)
...
将验证间隔扩展为-1,0和+1 OTP值,这将在3个时间间隔内返回true。
文档在; https://pyotp.readthedocs.io/en/latest/#pyotp.totp.TOTP.verify
答案 1 :(得分:1)
要检查的一件事是,将验证totp设置为与生成器相同的时间间隔。这将不起作用:
secret = pyotp.random_base32()
totp = pyotp.TOTP(secret, interval=60)
otp = totp.now()
totp = pyotp.TOTP(secret)
totp.verify(otp)
totp = pyotp.TOTP(secret, interval=60)
totp.verify(otp)
答案 2 :(得分:0)
查看the source,看起来您需要做的就是将interval
作为kwarg传递给TOTP
构造函数:
totp = pyotp.TOTP('secret', interval=60)
# ...