hashlib模块、logging模块
本章内容
- hashlib加密模块
- logging日志模块
hashlib加密模块
作用:把人输入的信息通过算法加密变成密文 即:
明文变密文
基本使用如下:
import hashlib
# 1.指定算法------> md5算法(最为常见)
md5 = hashlib.md5()
# 2.使用 update() 方法向这个算法对象输入字节类对象(通常是 bytes)。
md5.update('sorry')
# 如果字符串中是英文与数字 那么直接在前面加b转成字节(bytes)即可
# 3.获取加密之后的密文数据
res = md5.hexdigest()
print(res) # 73cf0e388971ee4ec34e8daedd0d36cc
"""
重复调用相当于单次调用并传入所有参数的拼接结果: m.update(a); m.update(b) 等价于 m.update(a+b)。
"""
eg:
import hashlib
res = hashlib.md5()
res.update(b'sorry')
res.update(b'123')
res.update(b'byebye')
res.hexdigest()
print(res.hexdigest())
res1 = hashlib.md5()
res1.update(b'sorry123byebye')
print(res1.hexdigest())
加密补充
1.加密之后的结果是无法解密的
# 所谓的解密其实就是不断匹配已经加密过的数据,被称为暴力破解
2.加盐处理 (增加破解的难度)
import hashlib
md5 = hashlib.md5()
# 加盐处理(添加一些额外的干扰项)
md5.update('哈哈哈'.encode('utf8')) # 此为干扰项
md5.update(b'123')
print(md5.hexdigest())
3.动态加盐
"""
其实也就是干扰项的动态变化
"""
4.补充:
"""
加密应用场景
1.密码加密如何比对
用户输入的还是明文但是到了程序里面之后会采用相同的加密算法变成密文
之后拿着密文与跟数据库里面的密文比对如果一致就是密码正确不一致就是错误
2.文件内容一致性校验
作为软件的提供者 我们在提供安全软件的同时会对给该软件内容做加密处理得到一个该安全软件独有的密文
用户在下载软件之后也会对内容做相同的加密之后比对两次密文是否一致
如果是表示中途没有被修改 如果不是表示中途被修改过 可能存在病毒
"""
针对大文件一致性校验的优化策略
如果一个文件有10G 那么如果全部读取并加密速度太慢
这个时候可以考虑对文件内容进行切片读取并加密的操作
logging模块
'''日志模块就是在程序的各个环境记录 便于后续的查看'''
# 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('运行了程序的登录')

浙公网安备 33010602011771号