【Python】从零开始学习Python中的随机模块:实现验证码生成功能

欢迎来CILMY23的博客

本篇主题为 从零开始学习Python中的随机模块:实现验证码生成功能

个人主页:CILMY23-CSDN博客

个人专栏系列: Python | C语言 | 数据结构与算法 | C++

感谢观看,支持的可以给个一键三连,点赞关注+收藏。


目录

一、什么是验证码?

二、Python中的随机模块

三、生成一个四位数的验证码

 3.1 简单的四位数字验证码

3.2 带有大小写字母的四位验证码

 3.3 生成强密码


一、什么是验证码?

 验证码(CAPTCHA)是一种用于区分用户是计算机还是人的公共全自动程序。它的全称是“Completely Automated Public Turing test to tell Computers and Humans Apart”,即“全自动区分计算机和人类的图灵测试”。

验证码的主要目的是防止自动化的脚本或机器人对网站进行恶意操作,如垃圾邮件发送、恶意注册、刷票等。

验证码种类也很多,什么短信验证码,滑块验证码,图片验证码,音频验证码等等,本文主要研究还是以数字和字母以及符号搭配的验证码。 

二、Python中的随机模块

 random模块提供了很多函数,用来生成随机数,我们主要用到的就是choice和

  1. choice(seq):从序列seq中随机选择一个元素。
  2. randint(a, b):生成一个指定范围内的随机整数,包括区间端点a和b。

 choice 函数用于从给定的非空序列中随机返回一个元素。 

例如:

import random

my_list = [1, 2, 3, 4, 5]
print(random.choice(my_list))

 randint 函数用于生成一个指定范围内的随机整数。

例如:

import random

# 生成 1 到 10 之间的随机整数
random_number = random.randint(1, 10)
print(random_number)

三、生成一个四位数的验证码

验证码验证的原理是:我们先随机生成一个验证码,然后用户通过在验证框中输入验证码,和给定的验证码进行比较,如果相同,则验证成功,否则,验证失败。 

 3.1 简单的四位数字验证码

# 四位数的数字验证码
import random

chptcha = ""

for i in range(4):
    chptcha = chptcha + str(random.randint(0,9))

print(f"四位数字验证码:{chptcha}")

3.2 带有大小写字母的四位验证码

在生成之前我们先认识一个模块,string模块包含许多与字符串处理相关的实用工具。

  1. string.ascii_letters:包含所有 ASCII 字母的字符串(包括大小写)。
  2. string.ascii_lowercase:包含所有小写 ASCII 字母的字符串。
  3. string.ascii_uppercase:包含所有大写 ASCII 字母的字符串。
  4. string.digits:包含所有数字字符的字符串。
  5. string.punctuation:包含所有标点符号的字符串。
  6. string.whitespace:包含所有空白字符的字符串(空格、制表符、换行符等)。

我们需要一个字符串包含所有的大小写字符和数字字符,然后从这个集合中抽取字符,最后拼接打印在一块。 

# 四位的字母数字验证码

import random
import string

characters = string.ascii_letters + string.digits

captcha = ''

for i in range(4):
    captcha += random.choice(characters)

print("字母数字验证码:", captcha)

 3.3 生成强密码

随着网络的发展,我们也需要一个强密码,简单的密码已经无法满足我们的需求(容易被破解),强密码指的是是独一无二且随机的密码。 密码每多设置一位,破解密码的工作量就会呈指数增长,甚至相差几十个量级。像“123456”这样简单的弱密码,1秒钟内就能被破解。8位数纯字母的密码,稍微有些慢,但破解也只需几分钟。

密码设置的要求: 

设置密码的长度至少应为 16 个字符。 

增加长度就可以简单的让密码强度增大,破解一个六位0-9的数字密码最强硬的破解需要9的六次方,而破解16位的就需要9的16次方。

在密码中也没有必要强制要求同时具有数字、大写字母、小写字母和符号。

这种要求并不一定会让密码变强,重点是使用的字母或者数字都是随机的。 但是,在某些网站上设定密码通常具有特定的字符要求,例如必须要求你设定一个长度至少为8,包含大小写字母等等这种要求

 下面我们就看看如何生成一个强密码

# 生成一个强密码

import random
import string

characters = string.ascii_letters + string.digits + string.punctuation

password = ''

for i in range(8):
    password += random.choice(characters)

print("强密码:", password)

当然这样的强密码也许并不严谨,但是通过这种方式我们可以了解到一定的验证码和密码生成原理。


感谢各位同伴的支持,本期python就讲解到这啦,如果你觉得写的不错的话,可以给个一键三连,点赞,关注+收藏,若有不足,欢迎各位在评论区讨论。       

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

跟着Datawhale重学数据结构与算法

数据结构和算法之前学过,现在跟着Datawhale重学一下,就当是监督自己学习,重新拾起来养成一个好的习惯,以后可以一直坚持下去。 开源链接:【 教程地址 】【电子网站】 首先: #mermaid-svg-Cdr3rn9fGCVAiKS…

文献速递:深度学习胰腺癌诊断--胰腺癌在CT扫描中通过深度学习检测:一项全国性的基于人群的研究

Title 题目 Pancreatic Cancer Detection on CT Scans with Deep Learning: A Nationwide Population-based Study 胰腺癌在CT扫描中通过深度学习检测:一项全国性的基于人群的研究 01 文献速递介绍 胰腺癌(PC)的五年生存率是所有癌症中…

记一次奇妙的某个edu渗透测试

前话: 对登录方法的轻视造成一系列的漏洞出现,对接口确实鉴权造成大量的信息泄露。从小程序到web端网址的奇妙的测试就此开始。(文章厚码,请见谅) 1. 寻找到目标站点的小程序 进入登录发现只需要姓名加学工号就能成功…

什么是线程的上下文切换?

我们知道使用多线程的目的是为了充分利用多核CPU,比如说我们是16核,但是当创建很多线程比如说160个,CPU不够用了,此时就是一个CPU来应付多个线程(这里我们是一个CPU应对10个线程)。这个时候,操作…

【LeetCode每日一题】924. 尽量减少恶意软件的传播(并查集)

文章目录 [924. 尽量减少恶意软件的传播](https://leetcode.cn/problems/minimize-malware-spread/)思路:并查集代码: 924. 尽量减少恶意软件的传播 思路:并查集 构建并查集:首先,代码创建了一个 UnionFind 类来维护节…

HTML 入门

HTML 简介 1. 什么是 HTML? 全称:HyperText Markup Language(超文本标记语言)。 超文本:暂且简单理解为 “超级的文本”,和普通文本比,内容更丰富。 标 记:文本要变成超文本&…

单例模式五种写法

单例模式五种写法 单例模式有五种写法:饿汉、懒汉、双重检验锁、静态内部类、枚举. 单例模式属于设计模式中的创建型模式 一、单例模式应用场景 windows的task manager(任务管理器)就是很典型的单例模式; windows的recycle bin(回收站)也是典型的单例应用&#…

防范“AI换脸”风险 ZOLOZ Deeper月超2万次攻防测试

4 月 16 日,深度伪造(Deepfake)综合防控产品ZOLOZ Deeper 在北京正式发布,以拦截用户刷脸过程中的“AI换脸”风险,目前已率先应用在身份安全领域。公开资料显示,ZOLOZ是蚂蚁数科的科技品牌,以生…

电商技术揭秘九:搜索引擎中的SEO数据分析与效果评估

相关系列文章 电商技术揭秘一:电商架构设计与核心技术 电商技术揭秘二:电商平台推荐系统的实现与优化 电商技术揭秘三:电商平台的支付与结算系统 电商技术揭秘四:电商平台的物流管理系统 电商技术揭秘五:电商平台的个性…

matplotlib手动调用默认配色

matplotlib 画图有个默认配色方案,在画不同图时会保持一致。如: import numpy as np import matplotlib.pyplot as plt# 图 1 数据 x np.arange(12).astype(np.float32) 1 y1 np.log(x) y2 1 / x y3 np.sin(x) # 图 2 数据 a np.random.randn(200…

关于HTTP1.0、1.1、1.x、2.0、3.0与HTTPS之间的理解

关于HTTP1.0、1.1、1.x、2.0、3.0与HTTPS之间的理解 HTTP的由来 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Eng…

JMeter控制器数据库获取一组数据后遍历输出

目录 1、测试计划中添加Mysql Jar包 2、添加线程组 3、添加 jdbc connection configuration 4、添加JDBC Request,从数据库中获取数据 5.获取数据列表,提取所有goodsName信息 6.通过添加控制器遍历一组数据 6.1 方式一:循环控制器方式 …

Day42:动态规划 LeedCode 01背包 416. 分割等和子集

01背包 1.确定dp数组以及下标的含义 dp[i][j]的含义:从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。 那么可以有两个方向推出来dp[i][j] 2.确定递推公式 不放物品i:由dp[i - 1][j]推出,即背…

记一次Mysql数据库宕机This could be because you hit a bug.

Hi I’m Shendi 今天收到消息说所有软件不能用了,网页都打不开,遇到了问题,于是在这里记录一下 记一次Mysql数据库宕机This could be because you hit a bug. 起因 为了节省成本,对于小公司而言服务器数量通常不会太多&#xff…

网络安全学习路线-超详细

零基础小白,到就业!入门到入土的网安学习路线! 在各大平台搜的网安学习路线都太粗略了。。。。看不下去了! 建议的学习顺序: 一、网络安全学习普法(心里有个数,要进去坐几年!&#x…

FRDM-MCXN947开发板之RGB灯

一、背景 RGB LED:通过红、绿、蓝三种颜色组合发光的LED,可以理解由三个不同发光属性的LED组成,这个是LCD平板显示原理的基础,一个LED相当于屏幕上面的一个像素 FRDM-MCXN947集成了一块RGB LED,它由三个GPIO口驱动&am…

2024 NTFS读写工具Tuxera NTFS for Mac 是如何进行下载、安装、激活的

本篇将为各位小伙伴们集中讲解一下NTFS读写工具Tuxera NTFS for Mac 是如何进行下载、安装、激活与换机的。 在数字化时代,数据交换和共享变得日益重要。然而,对于Mac用户来说,与Windows系统之间的文件交换可能会遇到一些挑战。这是因为Mac …

【Markdown】调整图片大小和对齐方式

插入图片 使用HTML: <img src"./xxx.png" width "xxx" height "xxx" />比如说我们插入一个图片&#xff0c;系统会自动帮我们生成一个图片链接 把这段链接插入即可 <img src"https://img-blog.csdnimg.cn/direct/66da1f6404…

大模型日报|今日必读的10篇大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.谷歌推出新型 Transformer 架构&#xff1a;反馈注意力就是工作记忆 虽然 Transformer 给深度学习带来了革命性的变化&#xff0c;但二次注意复杂性阻碍了其处理无限长输入的能力。 谷歌研究团队提出了一种新型 T…

《自动机理论、语言和计算导论》阅读笔记:p225-p260

《自动机理论、语言和计算导论》学习第 9 天&#xff0c;p225-p260总结&#xff0c;总计 26 页。 一、技术总结 1.pushdown automation(PDA&#xff0c;下推自动机) 2.DPDA Deterministic PDA(确定性下推自动机)。 二、英语总结 1.instantaneous (1)instant: adj. happi…
最新文章