最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中的google authenticator認(rèn)證過程

 更新時(shí)間:2024年11月22日 15:14:24   作者:slp_44777680  
文章介紹了使用Python 3.7生成Google Authenticator所需密鑰的步驟,包括使用pyotp模塊生成密鑰、生成二維碼圖片以及通過客戶端掃描二維碼進(jìn)行二次認(rèn)證的實(shí)現(xiàn)原理

Python的google authenticator認(rèn)證

環(huán)境描述

  • python 3.7
  • 所需安裝包 :
  • pyotp qrcode Image

實(shí)現(xiàn)原理

  1. 使用pyotp 的python模塊生成google auth 需要的密鑰
  2. 根據(jù)密鑰生成條形碼圖片
  3. 使用google authenticator 客戶端掃描條形碼,客戶端根據(jù)時(shí)間及密鑰經(jīng)過算法 生成6位數(shù)的驗(yàn)證碼
  4. 平臺(tái)二次認(rèn)證通過對(duì)輸入的驗(yàn)證碼進(jìn)行校驗(yàn),校驗(yàn)也是基于時(shí)間和密鑰

代碼實(shí)現(xiàn)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : SLP
# @Time : 2021/10/3 10:25

import os
import traceback
import pyotp
from qrcode import QRCode, constants


class GoogleAuthenticatorClient:
    def __init__(self, secret_key=None):
        self.secret_key = secret_key

    def create_secret(self):
        """
        生成google auth 需要的密鑰
        :return:
        """
        self.secret_key = pyotp.random_base32(64)
        return self.secret_key

    def create_secret_qrcode(self, name=None, issuer_name=None, save_to_file=True):
        """
        根據(jù)用戶名及密鑰生成二維碼圖片
        :param name:用戶名
        :param issuer_name:發(fā)行人
        :param save_to_file: 保存至文件
        :return:
        """
        data = pyotp.totp.TOTP(self.secret_key).provisioning_uri(name=name, issuer_name=issuer_name)
        qr = QRCode(
            version=1,
            error_correction=constants.ERROR_CORRECT_L,
            box_size=6,
            border=4, )
        try:
            qr.add_data(data)
            qr.make(fit=True)
            img = qr.make_image()
            if save_to_file:
                base_dir = os.path.dirname(os.path.abspath(__file__))
                dir_path = os.path.join(base_dir, 'static', 'image')
                if not os.path.exists(dir_path):
                    os.makedirs(dir_path)
                filepath = dir_path + os.sep + self.secret_key + '.png'
                img.save(filepath)  # 保存條形碼圖片
                return True, filepath
            else:
                return img.get_image()
        except Exception as e:
            traceback.print_exc()
            return False, None

    def verify_code_func(self, verify_code):
        t = pyotp.TOTP(self.secret_key)
        result = t.verify(verify_code)
        return result


if __name__ == '__main__':
    secret_key = 'PU6PY6FWPVQ4BXE7ZP6X7YMVM3BH3ODS7SW53GL3LJPED7AAQUVF2EKP6AGNFFOX'
    google_auth_ = GoogleAuthenticatorClient(secret_key=secret_key)
    # secret = google_auth_.create_secret()
    # print('秘鑰', secret)
    # # 生成圖片二維碼
    image = google_auth_.create_secret_qrcode(name='slp', issuer_name='GoldBull', save_to_file=False)
    print(image.show())

    # 驗(yàn)證
    # res = google_auth_.verify_code_func(verify_code='635543')
    # print(res)

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中Subprocess的不同函數(shù)解析

    Python中Subprocess的不同函數(shù)解析

    這篇文章主要介紹了Python中Subprocess的不同函數(shù)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 解決python明明pip安裝成功卻找不到包的問題

    解決python明明pip安裝成功卻找不到包的問題

    今天小編就為大家分享一篇解決python明明pip安裝成功卻找不到包的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • PyTorch 隨機(jī)數(shù)生成占用 CPU 過高的解決方法

    PyTorch 隨機(jī)數(shù)生成占用 CPU 過高的解決方法

    今天小編就為大家分享一篇PyTorch 隨機(jī)數(shù)生成占用 CPU 過高的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python dict亂碼如何解決

    python dict亂碼如何解決

    在本篇文章里小編給大家分享了關(guān)于python dict亂碼解決方法,需要的朋友們可以參考下。
    2020-06-06
  • PyQt5實(shí)現(xiàn)登錄頁面

    PyQt5實(shí)現(xiàn)登錄頁面

    這篇文章主要為大家詳細(xì)介紹了PyQt5實(shí)現(xiàn)登錄頁面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Python GIL(全局解釋器鎖)的使用小結(jié)

    Python GIL(全局解釋器鎖)的使用小結(jié)

    本文主要介紹了Python GIL(全局解釋器鎖)的使用小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-11-11
  • PyMongo安裝使用筆記

    PyMongo安裝使用筆記

    這篇文章主要介紹了PyMongo安裝使用筆記,本文講解使用pip方式安裝PyMongo,并給出一個(gè)pymongo的簡單使用代碼實(shí)例,需要的朋友可以參考下
    2015-04-04
  • Python的Flask框架中@app.route的用法教程

    Python的Flask框架中@app.route的用法教程

    這篇文章主要介紹了Python的Flask框架中@app.route的用法教程,包括相關(guān)的正則表達(dá)式講解,是Flask學(xué)習(xí)過程當(dāng)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-03-03
  • Python基于WordCloud制作詞云圖

    Python基于WordCloud制作詞云圖

    這篇文章主要介紹了python基于WordCloud制作詞云圖,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Python使用Bokeh庫實(shí)現(xiàn)炫目的交互可視化

    Python使用Bokeh庫實(shí)現(xiàn)炫目的交互可視化

    Bokeh是一個(gè)用于創(chuàng)建交互式可視化圖形的強(qiáng)大Python庫,它不僅易于使用,而且功能強(qiáng)大,適用于各種數(shù)據(jù)可視化需求,本文將介紹Bokeh庫的繪圖可視化基礎(chǔ)入門,需要的可以了解下
    2024-03-03

最新評(píng)論

湘乡市| 云梦县| 偏关县| 施秉县| 寿宁县| 云霄县| 五家渠市| 南溪县| 南溪县| 盐池县| 华坪县| 隆回县| 牟定县| 抚远县| 大冶市| 老河口市| 嘉禾县| 体育| 苏州市| 襄汾县| 大同市| 平定县| 梁山县| 大冶市| 敖汉旗| 大名县| 天等县| 琼结县| 甘肃省| 金沙县| 濮阳市| 孙吴县| 潼南县| 海门市| 云浮市| 阜阳市| 库车县| 辉县市| 藁城市| 新安县| 黔西|