一次性密码(One Time Password,简称OTP),又称“一次性口令”,是指只能使用一次的密码。一次性密码是根据专门算法、每隔60秒生成一个不可预测的随机数字组合,iKEY一次性密码已在金融、电信、网游等领域被广泛应用,有效地保护了用户的安全。
动态密码的产生方式,主要是以时间差作为服务器与密码产生器的同步条件。在需要登录的时候,就利用密码产生器产生动态密码,OTP一般分为计次使用以及计时使用两种,计次使用的OTP产出后,可在不限时间内使用;计时使用的OTP则可设置密码有效时间,从30秒到两分钟不等,而OTP在进行认证之后即废弃不用,下次认证必须使用新的密码,增加了试图不经授权访问有限制资源的难度。
安装库:pip install pyotp

#pip install pyotp
#Open MFA standards are defined in RFC 4226 (HOTP: An HMAC-Based One-Time Password Algorithm) and in RFC 6238 (TOTP: Time-Based One-Time Password Algorithm).
#https://tools.ietf.org/html/rfc4226
#https://tools.ietf.org/html/rfc6238https://tools.ietf.org/html/rfc6238
import pyotp
import base64
import time
s='hello'
print(s.encode())
secret = base64.b32encode(s.encode())
time.sleep(2)
totp = pyotp.TOTP(secret)
print("Current OTP:", totp.now())
hotp = pyotp.HOTP('base32secret3232')
for i in range(10):
hotp.at(i)
print(hotp.at(i))
aa=hotp.verify('316439', 1401) # => True
bb=hotp.verify('316439', 1402) # => False
print(aa)
print(bb)

银行等业务应用时;分配给用户的key包含了“hello”串,银行系统内也有这个“hello”串
没有人知道你的key是什么?即便银行内部人士也不知晓。
信息的传输也是通过其他加密措施完成的。
上面的一次性密码和银行后台的密码进行比对,作为鉴权依据。
所有传输也是通过较为复杂的加密进行的。
