python版 google密码认证器

复制代码
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import hmac, base64, struct, hashlib, time
def calGoogleCode(secretKey):
    """

    :param secretKey: 16个字符
    :return:
    """
    input_time = int(time.time())//30

    key = base64.b32decode(secretKey)
    msg = struct.pack(">Q", input_time)
    googleCode = hmac.new(key, msg, hashlib.sha1).digest()
    o = ord(str(googleCode)[19]) & 15
    googleCode = str((struct.unpack(">I", googleCode[o:o+4])[0] & 0x7fffffff) % 1000000)
    if len(googleCode) == 5:             # 如果验证码的第一位是0,则不会显示。此处判断若是5位码,则在第一位补上0
        googleCode = '0' + googleCode
    return googleCode


print(calGoogleCode('EKPHIPYDEN7RAAAB'))
复制代码

 

posted on   林肯公园  阅读(378)  评论(0编辑  收藏  举报

努力加载评论中...

导航

点击右上角即可分享
微信分享提示