【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 randommy_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 randomchptcha = ""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 stringcharacters = string.ascii_letters + string.digitscaptcha = ''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 stringcharacters = string.ascii_letters + string.digits + string.punctuationpassword = ''for i in range(8):password += random.choice(characters)print("强密码:", password)

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


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

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

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

相关文章

【位运算】Leetcode 丢失的数字

题目解析 268. 丢失的数字 本题的意思就是数组的长度为n,在[0,n]区间中寻找缺失的一个数字 算法讲解 直观思路:排序 Hash,顺序查找缺失的数字 优化:使用异或,首先将[0,n]之间所有数字异或在一起,然后将…

4.11 驱动开发

作业 3.1 实验现象 crw------- 1 root root 236, 0 Apr 11 15:55 /dev/myled0 crw------- 1 root root 236, 1 Apr 11 15:55 /dev/myled1 crw------- 1 root root 236, 2 Apr 11 15:55 /dev/myled2在串口工具,输入如下命令实现控制对应的LED灯进行工作echo 1 >…

链表创建的陷阱与细节

链表是线性表的一种,它在逻辑结构上是连续的,在物理结构上是非连续的。 也就是说链表在物理空间上是独立的,可能是东一块西一块的。如下顺序表和链表在内存空间上的对比: 而链表的每一块空间是如何产生联系实现在逻辑结构上是连续…

移动应用安全合规动态:网信办、金管局发文强调数据安全;3月个人信息违规抽查结果出炉!(第五期)

一、监管部门动向:国家互联网信息办公室公布《促进和规范数据跨境流动规定》; 工信部发布《关于网络安全保险典型服务方案目录的公示》 二、安全新闻:恶意软件警报!黑客利用软件即服务攻击印度安卓用户;Cerberus银行恶意软件的虚…

第十四届蓝桥杯题解:平方差 ,更小的数,买瓜,网络稳定性(货车运输)

目录 平方差 更小的数 买瓜 网络稳定性(货车运输) 货车运输 平方差 这道题就是数论的题,不难想到一个数m可以拆成(a-b)(ab),其实(a-b)和(ab)就是m的一对因子,不妨设为x和y。 则有: abx; a-by; x*ym; 联…

JVM—jps、jstat、jinfo、jmap、jstack的使用

JVM—jps、jstat、jinfo、jmap、jstack的使用 jps jps全称:Java Virtual Machine Process Status Tool 可以查看Java进程,相当于Linux下的ps命令,只不过它只列出Java进程。 jps:列出Jav程序ID和Main函数名称 jps -q:只输出进程ID jps -m …

MATLAB4:数值计算

文章目录 一、实验目的二、实验内容三、仿真结果四、实践中遇到的问题及解决方法 一、实验目的 1. 熟悉根据已知数据进行回归法曲线拟合。   2. 熟悉根据已知数据进行多项式曲线拟合。   3. 熟悉根据已知数据利用指定方法进行数据插值(临近插值、线性插值、立方…

小程序视频如何下载到电脑上

小程序视频如何下载到电脑上,很简单 1.利用Fiddler和Charles这些专业的抓包工具 2.利用录屏 3.利用专门抓取资源的工具(集成了抓取下载,而且对资源下载很友好) 工具我已经打包好了 下载高手链接:https://pan.baidu.com/s/1qJ81sNBzzzU0w…

leetcode2924--找到冠军II

1. 题意 给定一个有向无环图,方向表示胜负关系;求最后胜出的人。 2. 题解 将所有人标记为胜者,统计出度去掉对应胜者标记; 最后统计胜者数目,是否大于1,若大于1,则没有胜者,否则…

千云物流 -influxdb了解和应用

简介 InfluxDB Cluster 是一个开源的 时间序列数据库,没有外部依赖。它对于记录指标、事件和执行分析很有用。 InfluxDB Cluster 启发于 InfluxDB Enterprise、InfluxDB v1.8.10 和 InfluxDB v0.11.1,旨在替代 InfluxDB Enterprise。 InfluxDB Cluster 易于维护,可以与上游…

Linux的学习之路:6、Linux编译器-gcc/g++使用

摘要 本文主要是说一些gcc的使用,g和gcc使用一样就没有特殊讲述。 目录 摘要 一、背景知识 二、gcc如何完成 1、预处理(进行宏替换) 2、编译(生成汇编) 3、汇编(生成机器可识别代码 4、链接(生成可执行文件或…

【我的代码生成器】生成React页面类

有了数据表的结构信息,就能生成React 的页面类,快捷方便。 生成界面如下: 生成的React FrmUser.js页面如下: 只需再写里面的操作逻辑代码。

银河麒麟之PaddleOCR模型部署

一、PaddleOCR简介 PaddleOCR是一个基于飞桨框架开发的开源OCR工具,提供了一系列强大的文本识别功能。PaddleOCR支持多种文本识别任务,包括文字检测、文字识别、文本方向检测等。它具有高效、准确的特点,适用于多种场景下的文本识别需求&…

Selenium - java - 屏幕截图

文档地址 Selenium 浏览器自动化项目 | Selenium 安装 <dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.19.1</version></dependency>使用 创建WebDriver实例 …

IDP之Backstage - 环境搭建

0. 目录 1. 前言2. 环境准备&#xff08;Windows10下&#xff09;2.1 安装nvm2.2 git和docker安装 3. 创建模板项目3.1 典型错误: fails on the yarn install step3.2 再次启动3.3 验证 4. 相关 1. 前言 本不想写这篇&#xff0c;因为看着官网文档写着挺简单的&#xff0c;但实…

禅道登录/创建版本/编辑版本接口 【禅道版本 20.0.beta2】

登录获取token import requestsurl = "http://192.168.1.234:6061/api.php/v1/tokens" payload = {"account": "jenkins","password": "jenkins123" } headers = {}response = requests.request

UI设计的未来发展

UI 设计的未来发展&#xff0c;实际上是互联网行业未来发展的折射。毕竟&#xff0c;UI 设计始终是互联网行业的一部分&#xff0c;因此在互联网行业未来发展的可能性来看&#xff0c;UI 设计同样会跟随着互联网的部分稳步前进。曾经&#xff0c;在最初的图形化界面出现的时候&…

线上剧本杀小程序发展趋势如何?

随着几年的快速发展&#xff0c;剧本杀行业进入到了大众的视野&#xff0c;不过从2022年开始&#xff0c;行业就开始处于下滑趋势&#xff0c;但是行业反而变得更加的规范化。 经历过下滑发展后&#xff0c;剧本杀行业已经趋向专业化、精品化发展&#xff0c;行业正在复苏&…

高基报表是什么?高校各部门如何快速填报高基表?

高基报表——全称是《高等教育事业基层统计报表》&#xff08;以下简称《高基报表》&#xff09;&#xff0c;作为高等院校基本情况报表的代表&#xff0c;承载着学校办学实力的真实写照。填报高基报表是一项细致入微的工作&#xff0c;不仅关系到学校的科学管理和决策研究&…

第一节:什么是操作系统

什么是操作系统 一、一台计算机的组成部分1、计算机能干啥2、谈谈计算机硬件 二、什么是操作系统三、学习操作系统的层次 一、一台计算机的组成部分 如下图所示&#xff1a; 这就是就是构成一台计算机的组成部分 1、计算机能干啥 ∙ \bullet ∙计算机是我们专业吃饭的家伙&a…