hashlib、logging模块


目录

1.hashlib加密模块

2.logging日志模块

内容

hashlib模块

加密:将明文(人看得懂)数据通过一些手段变成密文数据(人看不懂)
密文数据的表现形式一般都是一串没有规则的字符串

最为常见的就是对用户的密码加密 防止密码泄露

基本使用 import hashlib

1.指定算法>>>:md5算法(最为常见 一般的业务需求足够了)

md5 = hashlib.md5()

2.将明文数据传递给算法对象>>>: update

md5.update(b'hello') # 如果字符串中是纯数字和英文 那么直接在前面加'b'转成bytes类型

3.获取加密之后的密文数据>>>: hexdigest

res = md5.hexdigest()
print(res) # 5d41402abc4b2a76b9719d911017c592

4.在传入数据的时候 只要内容一致 那么算法的结果肯定一致

md5 = hashlib.md5()

md5.update(b'hello')
md5.update(b'world')
md5.update(b'jason')
print(md5.hexdigest()) # 8faebe82e744992e51c86845cac3e1b7

md5.updata(b'helloworldjason')
print(md5.hexdigest()) # 8faebe82e744992e51c86845cac3e1b7

加密补充

1.加密之后的结果是无法直接反解密的

  所谓的反解密其实就是暴力破解>>>:反复的猜

  md5解密内部本质:提前想好很多可能是密码的组合

2.加盐处理:增加破解的难度 

import hashlib
md5 = hashlib.md5()
md5.updata('你追我‘.encode('utf8'))
md5.update(b'123')
print(md5.hexdigest()) # ce850e70febde5f3506fec0479dc0f96

3.动态加盐:干扰项动态变化

   可以是用户名的一部分 也可以当前时间

加密应用场景

1.密码加密如何比对

   用户输入的还是明文但是到了程序里面之后会采用相同的加密算法变成密文

   之后拿着密文与数据库里面的密文比对 如果一致就是密码正确不一致就是错误

2.文件内容一致性校验

   作为软件的提供者 我们在提供安全软件的同时会对该软件内容做加密处理得到一个该安全软件独有的密文

   用户在下载软件之后也会对内容做相同的加密之后比对两次密文是否一致

   如果是表示中途没有被修改 如果不是表示中途被修改过 可能存在病毒

3.针对大文件一致性校验的优化策略

    如果一个文件有10G 那么如果全部读取并加密速度太慢 这个时候可以考虑对文件内容进行切片读取并加密的操作

logging模块

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

2.日志等级

   日志按照重要程度分为五个级别:默认只有达到warning警告级别及以上才会记录日志

logging.debug('debug message') # 级别1
logging.indo('info message') # 级别2
logging.warning('warning message') # 级别3
logging.error('error message') # 级别4
logging.critical('critical message') # 级别5

3.基本使用

   创建日志: FileHandler

import logging
file_handler = logging.filehandler(filename = 'x.log',mode = 'a',encoding = 'utf8') 

   添加日志内容:basicConfig

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('警告’)