pyotp是一个用于生成和验证基于时间的一次性密码(TOTP)和基于计数器的一次性密码(HOTP)的Python模块。
它提供了一个简单而灵活的接口,用于实现二次身份验证(2FA)和单次密码验证机制。
import pyotp
import time
totp = pyotp.TOTP('XFXXGRMELERZXQ7AQNF3UNF2OX56NOQ3') # 预共享密钥
val = totp.now() # 获得基于当前时间戳生成动态密码
print(val)
# OTP verified for current time
print(totp.verify(val)) # 此时验证是通过的,所以verify的结果是True
time.sleep(30)
print(totp.verify(val)) # 30秒后动态密码将会过期,所以verify的结果是False
# 输出
411092
True
False
pyotp提供了一个辅助函数来生成32个字符的base32密码,与Google Authenticator和其他OTP应用程序兼容
pyotp.random_base32()
如果另外的一些应用程序希望将密钥格式化为十六进制编码的字符串,可以使用:
pyotp.random_hex() # 返回一个40个字符的十六进制编码的秘钥
pyotp, TOTP, HOTP, 二次身份验证, 动态密码
使用pyotp模块生成和验证基于时间的一次性密码,支持二次身份验证和动态密码验证,兼容Google Authenticator。