python接入GoogleAuth的实现
更新时间:2023年08月07日 09:15:47 作者:SeasonRun
经常会用到GoogleAuth作为二次验证码,本文主要介绍了python接入GoogleAuth的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
经常会用到GoogleAuth作为二次验证码,就扒了代码看看这块逻辑如何实现的,做个笔记。
import hmac import struct import time from hashlib import sha1 from urllib.parse import urlencode, quote if __name__ == '__main__': # account会作为标识显示在身份验证器上 account = input("please enter your account: ") # secret用于生成秘钥 secret = input("please enter your secret: ") # label会作为标识显示在身份验证器上 label = input("please enter your label: ") # 将secret转换成bytes s = secret.encode() # 获取时间片(1990年1月1日0时开始计时,30秒为一个单位) c = struct.pack(">Q", int(time.time()) // 30) # 根据secret和时间片指定sha1算法计算hash值,返回bytes类型hash值 hmac_hash = hmac.new(s, c, sha1).digest() print("hmac_hash:", len(hmac_hash)) # 取出hmac_hash的第19位和0xf做”与“运算 offset = hmac_hash[19] & 0xf print("offset:", offset) # 从hmac_hash中取出4个16进制字节转换为正整数(I)并取索引为[0],再与16进制0x7fffffff做与运算,最后除以10的六次方 google_code = (struct.unpack(">I", hmac_hash[offset: offset + 4])[0] & 0x7fffffff) % 10 ** 6 print(google_code) # 若计算后结果不足6位, 则在左侧补0 google_code = f'{google_code:>06}' print(google_code) prefix = label prefix += f':{account}' ends = { 'secret': secret, 'label': label } base_uri = 'otpauth://totp/{prefix}?{ends}' # 调用草料二维码生成api caoliao_qrcode_url = 'https://api.pwmqr.com/qrcode/create/?url={qr_content}' qr_uri = base_uri.format(prefix=prefix, ends=urlencode(ends)) print(caoliao_qrcode_url.format(qr_content=quote(qr_uri)))
使用谷歌身份验证器扫描链接生成的二维码即可绑定。
到此这篇关于python接入GoogleAuth的实现的文章就介绍到这了,更多相关python接入GoogleAuth内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
相关文章
python处理自动化任务之同时批量修改word里面的内容的方法
在本篇文章里小编给各位整理的是一篇关于利用python处理自动化任务之同时批量修改word里面的内容的文章,需要的可以参考学习下。2019-08-08python 判断字符串当中是否包含字符(str.contain)
这篇文章主要介绍了python 判断字符串当中是否包含字符(str.contain),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-06-06
最新评论