模块的应用(三)

hashlib加密模块

# 什么是加密
就是将人能看得懂的数据(明文)通过一些手段变成人看不懂得数据(密文数据),密文数据的表现形式一般都是一串没有规则的字符串
# 加密算法
加密算法有很多种>>>(将明文变密文的内部规则),算法的难易程度可以根据产生密文的长短来判断,越长产生的密文算法就越复杂
# 什么时候使用加密
涉及到隐私数据的时候,应该考虑使用加密,比如用户的密码,就是经过加密以防止密码泄露

# 基本使用
import hashlib
1.指定算法>>>:md5算法
    md5 = hashlib.md5()
2.将明文数据传递给算法对象,只能接收bytes类型,如果字符串中是纯数字和英文,那么直接在前面加b转换成bytes类型
md5.update(b'hello')
3.获取加密之后的秘闻数据
res = md5.hexdigest()
print(res)
# 在传入数据的时候,只要内容一致,那么算法的结果肯定一致
md5 = update.md5()
md5.update(b'hello')
md5.update(b'world')
md5.update(b'jason')
print(md5.hexdigest())
# 8faebe82e744992e51c86845cac3e1b7
md5.update(b'helloworldjason')
print(md5.hexdigest())
# 8faebe82e744992e51c86845cac3e1b7


加密补充

#1. 加密之后的结果是无法直接反解密的,所谓的反解密其实就是暴力破解,提前想好很多可能是密码的组合,然后自己加密,最后就是一个一个去猜
#2. 加盐处理(添加一些额外的干扰项来增加破解的难度)
import hashlib
md5 = hashlib.md5()
md5.update('你追我'.encode('utf8'))  # 加盐处理
md5.update(b'123')
print(md5.hexdigets())
# 3.动态加盐
干扰项动态变化,可以是当前时间...

# 加密应用场景
1.密码加密比对
用户输入的是明文,但是到了程序里面之后会采用相同的加密算法变成密文,然后拿着密文去跟数据库里的密文对比,如果是一致的话就是密码正确,如果不一致就是密码错误
2.文件内容是否一致校验
作为软件的提供者,我们在提供安全软件的同时会对给该软件内容做加密处理得到一个该安全软件独有的密文
用户在下载软件之后也会对内容做相同的加密之后比对两次密文是否一致,如果是表示中途没有被修改,如果不是表示中途被修改过,可能存在病毒
# 针对大文件一致性校验的优化策略是对文件内容进行切片读取并加密的操作

logging模块(日志模块)

日志模块就是在程序的各个环境记录,便于后续的查看

1.日志等级
import logging
日志按照重要程度分为五个等级,默认只有达到warning警告级别及以上才会记录日志
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')

2.基本使用
import logging
file_handler = logging.FileHandler(filename='x1.log',mode='a',encoding='utf8',)
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname) - %(module)s: %(message)s',
          datefmt='%Y-%m-%d %H:%M:%S %p',
           handlers=[file_handler,],
           level=logging.ERROR
            )
logging.error()