如何更改pyotp.totp模块的间隔?

时间:2017-06-27 10:04:23

标签: python

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输出,但我得到以下输出。

3 个答案:

答案 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)
# ...