hashlib加密模板 logging日志模板
概要
-
hashlib加密模板
-
logging日志模块
内容
加密模块
加密:将明文(人能看得懂)数据通过一些手段变成密文数据(人不能看懂)
密文数据:一般都是一串没规则的字符串
加密算法可以分为好多种 就是将明文变密文的内部规则
算法的难易程度可以根据产生密文的长短来判断 越长意味着算法越复杂
什么时候使用加密
涉及到隐私数据的时候 应该考虑使用加密
最常见的是对用户密码加密 目的是防止密码泄露
比较常见的算法 md5(针对一般的业务需求足够了)
如果字符串是纯数字和英文 那么直接在前面加b转成bytes类型 在括号内直接写bytes类型
import hashlib
md5 =hashlib.md5()
md5.update(b'hello')
res =md5.hexdigest()
print(res)
# 5d41402abc4b2a76b9719d911017c592
注意:在传入数据的时候 只要括号内的内容一致 那么算法的结果肯定是一致的 以下两种代码运行结果是一致的
md5 =hashlib.md5()
md5.update(b'hello')
md5.update(b'world')
md5.update(b'jason')
print(md5.hexdigest())
md5.update(b'helloworldjason')
print(md5.hexdigest())
加密补充内容
1.加密之后的结果是无法直接反解密的
大白话:就是解密后形成的一系列字符串我们是无法解密成人能看懂的语言
其实现实上的反解密其实本质上是暴力破解>>>:反复的猜
比如:md5解密内部本质 就是提前想好好多种可能是密码的组合 然后取表内数据反复猜
123 加密后的字符串是什么
321 加密后的字符串是什么
222 加密后的字符串是什么
然后组成存储在一个表内:
{'密文1':123,'密文2':321,'密文3':222}
2.加盐处理(添加一些额外的干扰项)
增加破解的难度
import hashlib
md5 =hashlib.md5()
md5.update('你追尾'.encoding('utf8'))
md5.update(b'123')
print(md5.hexdigest())
3.动态加盐
干扰项动态变化
可以是用户名的一部分 也可以是当前时间
加密应用场景
1.密码加密如何比对用户名
用户输入的还是明文但是到了程序里面之后会采用相同的加密算法变成密文
之后拿着密文与数据库里面的密文比对如果两者一致就是密码正确不一致就是错误
2.文件内容一致性校验
作为软件的提供者 我们在提供安全软件的同时会给该软件内容做加密处理得到一个该安全软件独有的密文
用户在下载软件后也会对内容做相同的加密之后比对两次密文是否一致
如果是表示中途没有被修改 如果不是表示中途被修改过 可能存在病毒
针对大文件一致性校验的优化策略
如果一个文件有10G 那么如果全部读取并加密速度太慢
这个时候可以考虑对文件内容进行切片读取并加密的操作
logging模块
日志模块就是在程序的各个环境记录 便于后续的查找
对于日志模块 我们只需要听流程思路 最后cv即可 无需详细记忆
1.日志等级
import logging
日志按照重要程度分为五个级别:默认只有达到warning警告级别(10/20/30......)及以上才会记录日志
import logging
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 ='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号