案例补充:random模块模拟随机验证码登陆验证
案例补充:random模块模拟随机验证码登陆验证
***用到的知识点
【一】random模块产生随机数字
(1)产生0-9之间的随机整数
import random
random_int = str(random.randint(0, 9))
(2)产生A-Z之间的字母
import random
random_upper = chr(random.randint(65, 90))
(3)产生a-z之间的字母
random_lower = chr(random.randint(97, 122))
(4)随机获取字符并进行拼接
import random
code = ''
for i in range(n):
random_int = str(random.randint(0, 9)) # 0-9之间的整数
random_upper = chr(random.randint(65, 90)) # A-Z之间的字母
random_lower = chr(random.randint(97, 122)) # a-z之间的字母
temp = random.choice([random_int, random_upper, random_lower])
code += temp
n:产生的随机验证码位数
原理:
通过在三种生成的随机字符中进行拼接其中一个
拼接n次最终达到想要的验证码位数
(5)演示
import random
def get_random_code(n):
code = ''
for i in range(n):
random_int = str(random.randint(0, 9)) # 0-9之间的整数
random_upper = chr(random.randint(65, 90)) # A-Z之间的字母
random_lower = chr(random.randint(97, 122)) # a-z之间的字母
temp = random.choice([random_int, random_upper, random_lower])
code += temp
return code
res = get_random_code(6)
print(res)
# 46O0WG
# LTQSc5
【二】以text文档为数据库
(1)数据库的声明与创建
import os
# 声明数据库位置
file_path = 'Infos' + '\\' + 'user_pwd.txt'
if not os.path.exists(file_path):
with open(file_path, 'a') as f:
f.write('')
- 利用OS模块进行文件路径的判断
- 注意:
- os模块只能创建文件夹,不能创建文件
- os模块就可以判断文件路径是否存在
- 解决方案
- 利用os模块判断路径是否存在
- 存在则忽略
- 不存在则按照路径用文件操作方法
w写一个新文件 - 内容写为空
- 利用os模块判断路径是否存在
【三】MD5加密
(1)引言
- MD5是摘要算法,可以将任意
明文数据加密成十六位 二进制数据 - 同时为了数据的安全性做加盐处理
- 即验证签名的一致性
- 只有注册时产生的
盐 + 明文数据转成的加密数据 = 登录时盐 + 明文数据转成的加密数据 - 才能登陆成功,签名一致,否则不成功
- 只有注册时产生的
- 即验证签名的一致性
(2)示例
def encrypt_decrypt(data):
# 转为二进制数据
data = data.encode('utf-8')
# 创建md5对象
md5 = hashlib.md5()
# md5进行加密
md5.update(data)
# 取出md5加密后的哈希值
encrypt_result = md5.hexdigest()
return encrypt_result
【案例】
- main.py
- verify_code