欢迎来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和
- choice(seq):从序列seq中随机选择一个元素。
- 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
模块包含许多与字符串处理相关的实用工具。
string.ascii_letters
:包含所有 ASCII 字母的字符串(包括大小写)。string.ascii_lowercase
:包含所有小写 ASCII 字母的字符串。string.ascii_uppercas
e
:包含所有大写 ASCII 字母的字符串。string.digits
:包含所有数字字符的字符串。string.punctuation
:包含所有标点符号的字符串。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就讲解到这啦,如果你觉得写的不错的话,可以给个一键三连,点赞,关注+收藏,若有不足,欢迎各位在评论区讨论。