当前位置: 首页 > news >正文

【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.lryc.cn/news/340151.html

相关文章:

  • 游戏动画技术:从传统到深度学习
  • Github 2024-04-12 开源项目日报 Top10
  • 若依下整合多个Redis
  • SRTP + RTCP + SCTP
  • 每日一题 — 串联所有单词的子串
  • Android studio顶部‘app‘红叉- Moudle ‘XX.app’ dosen’t exist in project
  • 软考证书有用吗?软考证书的含金量大吗?
  • 自动化测试原理,怎么理解?【UI自动化】
  • typedef,#define,asserr,exit函数,free函数
  • Linux的重要命令(二)+了解Linux目录结构
  • nmap使用
  • 简约风好看的个人主页源码
  • 1113. 红与黑--Flood Fill 算法
  • 深入Java中间件:编程设计精粹
  • AUTOCAD输出或打印PDF文件时,如何将图形居中且布满图纸?
  • unity socket udp 连接
  • 【ensp】VLAN间通信的解决办法
  • 接口测试框架搭建D22
  • CASA模型教程
  • 算法思路-遥感语义分割与变化检测
  • 动态规划专练( 231.打家劫舍Ⅱ)
  • K-means和逻辑回归
  • 3.2 iHRM人力资源 - 组织架构 - 编辑及删除
  • 支付系统核心逻辑 — — 状态机(JavaGolang版本)
  • rest_framework_mongoengine实现后端的增删改查
  • 【精读文献】Scientific data|2017-2021年中国10米玉米农田变化制图
  • 高光谱图像修复笔记
  • GPS定位原理及应用分析
  • Java面试篇9——并发编程
  • [RK3399 Linux] 使用busybox 1.36.1制作rootfs