Tag: 一次性密码

Google身份validation器在Python中的实现

我正在尝试使用Google身份validation器应用程序生成的一次性密码。 Google身份validation器的function Google Authenticator基本上实现了两种types的密码: HOTP – 基于HMAC的一次性密码,这意味着每次通话都会改变密码,符合RFC4226 , TOTP – 基于时间的一次性密码,每30秒改变一次(据我所知)。 Google身份validation器也可在此处以开放源代码的forms获得: code.google.com/p/google-authenticator 当前的代码 我正在寻找现有的解决scheme来生成HOTP和TOTP密码,但没有find太多。 我的代码是负责生成HOTP的以下片段: import hmac, base64, struct, hashlib, time def get_token(secret, digest_mode=hashlib.sha1, intervals_no=None): if intervals_no == None: intervals_no = int(time.time()) // 30 key = base64.b32decode(secret) msg = struct.pack(">Q", intervals_no) h = hmac.new(key, msg, digest_mode).digest() o = ord(h[19]) & 15 h = (struct.unpack(">I", […]