1. hashlib加密模块
"""加密模块"""
# 什么是加密
# 将明文(人看得懂)
# 数据通过一些手段变成密文数据(人看不懂)
# 密文数据的表现形式一般都是一串没有规则的字符串
# 加密算法
# 加密算法有很多种 >> > (将明文变密文的内部规则)
# 算法的难易程度可以根据产生密文的长短来判断
# 越长意味着算法越复杂
# 什么时候使用加密
# 涉及到隐私数据的时候
# 应该考虑使用加密
# 最为常见的就是对用户的密码加密
# 防止密码泄露
# 基本使用
import hashlib
# 1.指定算法>>>:md5算法(最为常见 一般的业务需求足够了)
md5 = hashlib.md5()
# 2.将明文数据传递给算法对象
md5.update(b'python_cat') # 只能接收bytes类型
"""如果字符串中是纯数字和英文 那么直接在前面加b转成bytes类型"""
# 3.获取加密之后的密文数据
res = md5.hexdigest()
print(res)
# >>>2ad888ab0315d85818ef7bef7688d39d
# 在传入数据的时候 只要内容一致 那么算法的结果肯定一致
md5 = hashlib.md5()
md5.update(b'1')
md5.update(b'2')
md5.update(b'3')
print(md5.hexdigest())
# >>>fc5174e70981da481c38cbc8123a1bb8
md5.update(b'123')
print(md5.hexdigest())
# >>>fc5174e70981da481c38cbc8123a1bb8
# 1.加密之后的结果是无法直接反解密的
# 所谓的反解密其实是暴力破解>>>:反复的猜
# 2.加盐处理
# 增加破解的难度
import hashlib
md5 = hashlib.md5()
# 加盐处理(添加一些额外的干扰项)
md5.update('python猫'.encode('utf8'))
md5.update(b'123')
print(md5.hexdigest())
# >>>594326ef5cdcd9d460f9e374cf69d240
# 3.动态加盐
# 干扰项动态变化,可以是用户名的一部分
"""
加密应用场景
1.密码加密如何比对
用户输入的还是明文但是到了程序里面之后会采用相同的加密算法变成密文
之后拿着密文与跟数据库里面的密文比对如果一致就是密码正确不一致就是错误
2.文件内容一致性校验
作为软件的提供者 我们在提供安全软件的同时会对给该软件内容做加密处理得到一个该安全软件独有的密文
用户在下载软件之后也会对内容做相同的加密之后比对两次密文是否一致
如果是表示中途没有被修改 如果不是表示中途被修改过 可能存在病毒
"""
2. logging模块
'''日志模块就是在程序的各个环境记录 便于后续的查看'''
# 针对日志模块 我们只需要听流程思路 最后CV即可 无需详细记忆
# 1.日志等级
import logging
# 日志按照重要程度分为五个级别:默认只有达到warning警告级别及以上才会记录日志
# logging.debug('debug message') # 10
# logging.info('info message') # 20
# logging.warning('warning message') # 30
# logging.error('error message') # 40
# logging.critical('critical message') # 50
# 2.基本使用
import logging
file_handler = logging.FileHandler(filename='x1.log', mode='a', encoding='utf-8', )
# 所有的格式不需要记忆 后续几乎都是拷贝加修改
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
handlers=[file_handler, ],
level=logging.ERROR
)
logging.error('6666666666')
logging.critical('7777777777')