常用内置模块(三)
hashlib加密模块
'''主要用来做文本加密'''
# 什么是加密?
将明文(人看得懂)通过特殊手段变成密文(人看不懂)
密文数据的表现形式一般都是一串没有规则的字符串
# 加密算法
加密算法就是把明文转成密文的准则
算法的难易程度可以根据产生密文的长短来判断
例如,md5算法
# 基本使用
import hashlib
pwd = 'oscar123'
md5 = hashlib.md5() # 指定算法,md5
md5.update(pwd.encode('utf8')) # 将明文传递给md5对象,注意md5只能接收二进制类型
print(md5.hexdigest()) # 获取密文
运行结果:
9d87d0e415b28ccc638a396e58e705d3
'''
算法一致,同样的明文经加密得到的密文一定一致
加密的结果无法反解密
'''
# 加盐处理
目的:增加破解难度
原理:在原本明文的基础上增加干扰项
eg:
pwd = 'oscar123'
md5 = hashlib.md5()
md5.update(pwd.encode('utf8'))
md5.update('我就是要让你解不开'.encode('utf8')) # 添加干扰内容
print(md5.hexdigest()) # 获取密文
运行结果:
33d99f7c96c5f42dc7f1bde9ba99a90a
# 动态加盐
干扰项可以动态变化的
如把时间戳当干扰项
"""
加密应用场景
1.密码加密如何比对
用户输入的还是明文但是到了程序里面之后会采用相同的加密算法变成密文
之后拿着密文与跟数据库里面的密文比对如果一致就是密码正确不一致就是错误
2.文件内容一致性校验
作为软件的提供者 我们在提供安全软件的同时会对给该软件内容做加密处理得到一个该安全软件独有的密文
用户在下载软件之后也会对内容做相同的加密之后比对两次密文是否一致
如果是表示中途没有被修改 如果不是表示中途被修改过 可能存在病毒
"""
针对大文件一致性校验的优化策略
如果一个文件有10G 那么如果全部读取并加密速度太慢
这个时候可以考虑对文件内容进行切片读取并加密的操作
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('FBI警告')
![]()