Python: 使用pyotp实现OTP一次性密码验证

使用pyotp实现OTP一次性密码验证

OTP的基本原理

  1. 生成一个共享秘钥作为随机数的种子
  2. 服务端通过种子计算出当前的密码
  3. 客户端也通过相同的种子计算出当前的密码
  4. 验证客户端生成的密码和服务端生成的密码是否匹配

服务端和客户端计算的方式一样

共享密钥 + 时间因子 + 算法 => 密码结果

文档

  • https://github.com/pyauth/pyotp
  • https://github.com/tadeck/onetimepass/
  • https://pyauth.github.io/pyotp/

安装

pip install pyotp

基本使用示例

import pyotp# 秘钥
secret_key = 'S5MPVVK6TYBAYJTKEWW5UGDSC2NX6OPS'totp = pyotp.TOTP(secret_key)# 生成一个随机密码
totp.now()  # => '492039'# 验证
totp.verify('198361') # 返回 True或False

秘钥有一定的规则,可以使用pyotp提供的方法生成一个随机秘钥

secret_key = pyotp.random_base32()  # S5MPVVK6TYBAYJTKEWW5UGDSC2NX6OPS

生成一个url,使用Google Authenticator扫描

# 生成一个url,使用Google Authenticator扫描
print(totp.provisioning_uri(name='alice@google.com', issuer_name='Secure App'))
# otpauth://totp/Secure%20App:alice%40google.com?secret=S5MPVVK6TYBAYJTKEWW5UGDSC2NX6OPS&issuer=Secure%20App

比如使用https://cli.im/text 生成二维码如下
在这里插入图片描述

参考

  • Python使用otp实现二步验证

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/18383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多个文本如何一键导出二维码?在线批量生码的制作方法

当存在多条文本数据并且需要将每条数据生成单独的二维码来使用,很多小伙伴可能还在用一个一个来制作的方法,在二维码生成器上将文本转二维码。这种方式操作起来比较的繁琐,需要浪费大量的时间,那么有什么方法可以简化这个过程吗&a…

【Android-Compose】ViewModel 的 init 初始化函数中使用非主线程上的协程闪退问题

问题: 在 Compose- kotlin 中,如果在 ViewModel 中的 init 函数中使用非主线程上的协程会导致闪退问题, 具体代码为: HiltViewModel class ApkScreenViewModel Inject constructor(... ) : ViewModel() {// 1. 在非 主线程的协程…

#学习方法#笔记#微信

飞鸟写作是一个非常好用、靠谱且方便的论文写作工具,可以帮助用户高效地完成论文写作任务。无论是学生还是研究人员,使用飞鸟写作都能极大地提升写作效率和质量。 首先,飞鸟写作具有强大的查重降重功能,能够帮助用户快速检测论文…

【数据库】数据库学习(MySQL,Oracle,PostgreSql)

数据库语句学习 摘要:文章主要内容是数据库语句的基本操作,以及一些基本的数据库标准库函数 重点:SQL语句对大小写不敏感 数据库操作语句 SELECT - 从数据库表中获取数据UPDATE - 更新数据库表中的数据DELETE - 从数据库表中删除数据INSERT …

OSPF的扩展配置

1、认证——直连的邻居或邻接关系间,进行认证配置后,5种数据包中均携带身份核实的密码,且华为设备会对更新信息进行加密--前提为认证方式选择密文认证 1)接口认证 [r1-GigabitEthernet0/0/1ospf authentication-mode md5 1 cipher 123456 直连的邻居间秘钥和编号、模…

行列视(RCV)能否同时支持多个实时数据库?

行列视(RCV)生产数据应用系统在设计时考虑到了多数据源的需求,因此它支持同时连接多个实时数据库。这意味着用户可以轻松地将来自不同实时数据库的数据整合到行列视(RCV)系统中,实现数据的集中管理和分析。…

Android14 WMS-窗口添加流程(二)-Server端

上一篇文章讲到了Client端窗口添加流程,本文接着上文往下讲,讲一下Server端的窗口添加流程。 1. WindowManagerService#grantInputChannel 由grantInputChannel我们可以看到,Client端传入了session对象, 发起者Uid-callingUid&am…

X.509数字证书

在国密标准文件《GMT 0015-2012 基于SM2密码算法的数字证书格式》里有对X.509数字证书格式的详细描述。 数字证书的定义 由国家认可的,具有权威性、可信性和公正性的第三方证书认证机构(CA)进行数字签名的一个可信的数字化文件。 数字证书…

YOLOv10代码详细介绍(附录训练教程和权重)

前言 YOLOv10 是清华大学研究人员在 UltralyticsPython 清华大学的研究人员在 YOLOv10软件包的基础上,引入了一种新的实时目标检测方法,解决了YOLO 以前版本在后处理和模型架构方面的不足。通过消除非最大抑制(NMS)和优化各种模型…

【几何角度】感知机

本质:将n维空间中的一些点线性投影到一维,在一维轴上找一个阈值对这些点进行二分类。 程序: import numpy as npclass Perceptron:def __init__(self, learning_rate0.01, n_iterations1000):self.learning_rate learning_rateself.n_itera…

【Python基础】一文搞懂:Python 中 “requirements.txt“ 文件生成和使用

文章目录 1 引言2 什么是 requirements.txt?3 如何生成 requirements.txt?3.1 方法一:使用 pip freeze3.2 方法二:使用 pipreqs 3.3 使用 pip freeze 和 pipreqs 的对比4 如何使用 requirements.txt?4.1 安装依赖4.2 更…

[从零开发JS应用] 如何在VScode中配置Javascript环境,常见的调试方法有哪些?

一、安装VSCode和Node.js 记录环境配置:本文配置的环境主要针对单独JS文件的断点调试,主要是为了调试LeetCode里面的代码。 首先在官网下载对应的版本:https://nodejs.org/en/ 开始安装,可以自定义选择安装路径。 这里选择Add Pa…

【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk

背景:部分客户需求将自己网站打包成app,供用户在浏览器安装使用、 网页网址快速生成app 准备材料操作流程第一步:打开HBuilder X新建项目第二步创建Wap2App项目第三步修改App图标第四步发布app第五步查看apk 准备材料 1.需要打包的网页 2.ap…

在网页开发中,前后端如何更好地协同工作?

在网页开发中,前后端如何更好地协同工作是非常关键的,以下是一些方法和技巧可以帮助前后端更好地协同工作: 1.明确需求和规范:前后端应该共同讨论和明确项目的需求和规范,包括功能、界面、数据格式等。确保双方对项目…

页面加载不出来,报错[@umijs/runtime] load component failed

问题描述 页面加载不出来数据,一直在旋转,控制台输出内容如下: 原因分析: 之前页面是没有问题的,在写当前页面突然出现页面加载不出来,控制台报错,主要是页面引入了这行代码报错 import { …

MX Component基础使用(多点位读取,多点位写入)

步骤,先连接PLC,然后在填入对应的点位 D10 然后去读取。 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;us…

边缘计算网关的主要功能有哪些?天拓四方

随着物联网(IoT)的快速发展和普及,边缘计算网关已经成为了数据处理和传输的重要枢纽。作为一种集成数据采集、协议转换、数据处理、数据聚合和远程控制等多种功能的设备,边缘计算网关在降低网络延迟、提高数据处理效率以及减轻云数…

民国漫画杂志《时代漫画》第13期.PDF

时代漫画13.PDF: https://url03.ctfile.com/f/1779803-1247458360-14efab?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络!

数组的定义、顺序存储及特殊矩阵的存储

目录 一、数组的定义 1.1概念 1.2抽象数据类型定义 二、数组的顺序存储 2.1一维数组元素的存储位置 2.2二维数组元素的存储位置 2.3三维数组元素的存储位置 三、特殊矩阵的压缩存储 3.1相关概念 3.2对称矩阵 3.3三角矩阵 3.4对角矩阵(带状矩阵&#xff0…

【机器学习300问】102、什么是混淆矩阵?

一、混淆矩阵的定义 混淆矩阵是一种用于评估分类模型性能的评估指标。当模型对数据进行预测并将数据分配到预定义的类别时,混淆矩阵提供了一种直观的方式来总结这些预测与数据实际类别之间的对应关系。具体来说,它是一个表格。 二、分类模型性能评估一级…