今日总结
一、hashilb加密模块
二、logging模块
一、hashilb加密模块
# 加密就是指将明文(就是人能看懂的)数据通过进行操作变成密文(就是人看不懂的)数据
# 密文数据的表达形式是一串没有规则的字符串
# 加密算法
加密算法有很多种(将明文变密文的内部规则)
算法的难易程度可以根据产生密文的长短来判断——越长算法也就越复杂
# 在何时使用加密
涉及到隐私数据的时候考虑加密,比如用户密码加密,来防止密码泄露
# 使用方法
import hashlib
# 使用指定算法——md5算法
md5 = hashlib.md5()
# 将明文数据传递给算法对象,并且直接接受bytes类型
md5.update(b'hello world') # 如果字符串是纯数字和英文,那么直接在前面加b转变成bytes类型
# 获取加密数据
res = md5.hexdigest()
print(res)

# 当传入的数据内容一致时,算法的加密结果是一样的
import hashlib
md5 = hashlib.md5()
# md5.update(b'heihei')
# md5.update(b'shishi')
# md5.update(b'angang')
# print(md5.hexdigest()) # a77d91687092974547298322ce8716ca
md5.update(b'heiheishishiangang')
print(md5.hexdigest()) # a77d91687092974547298322ce8716ca
通过获取用户信息,给用户加密

2、加密补充
1、加密后的结果是无法直接反解密的
"""
md5解密内部本质
提前想好很多可能是密码的组合
123 自己加密
321 自己加密
222 自己加密
{'密文1':123,'密文2':321}
"""
eg:
给1234加密获取密文数据
81dc9bdb52d04dc20036dbd8313ed055

2、加盐处理(增加破解的难度)
import hashlib
md5 = hashlib.md5()
md5.update('嘿嗨嘿'.encode('utf8'))
md5.update(b'1234')
print(md5.hexdigest())

3、动态加盐(用来干扰动态变化)
可以是用户名的一部分、也可以是当前的时间
# 加密应用场景
"""3.1 密码加密如何比对
用户输入的还是明文但是到了程序里面就会采用相同的加密算法变成密文——然后对数据库里面的密文进行比对,如果一致就是正确,不一致就是错误
3.2 文件内容一致性校验
在提供安全软件的同时,会对给该内容做加密处理得到一个该安全软件独有的密文
用户在下载软件之后也会对内容做相同的加密比对两次密文是否一致
如果一致,那就表示中途没有被修改, 如果不一致那就表示中途被修改、可能会存在病毒"""
针对大文件一致性校验的优化策略
如果一个文件10G,那么当全部读取并加密速度太慢,这个时候可以考虑对文件内容进行切片读取并加密的操作
二、logging模块
"""
日志模块就是记录程序的各个环境,便于后期查看
"""
1、日志等级
import logging
# 一级
logging.debug('debug message') # 程序的大小事全部记录
# 二级
logging.info('info message') # 记录日常的事
# 三级
logging.warning('warning message') # 记录可能会发生的错误警告
# 四级
logging.error('error message') # 发生的错误
# 五级
logging.critical('critical messgae') # 程序崩了
# 默认只有达到warning警告等级以上才会记录日志
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('嘿嗨嘿')

