二十三.面向对象模块使用(hashlib,logging)
模块使用
1. hashlib
用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 import hashlib hash = hashlib.md5() hash.update(b'admin') cc=hash.hexdigest() print(cc) print("**********************************************************888") # 以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。 bb=input("输入密码") has=hashlib.md5(b'lover6666') # 在md5里面加盐 意思就是随意加一个key值确保不被撞库 has.update(bb.encode("utf-8")) # 加密必须是字节 print(has.hexdigest()) # 2f41599d1b13574d871267603d6dd8c3 lover print("**********************************************************888") aa=input("输入") cc=hashlib.md5(b'lover6666') cc.update(aa.encode("utf-8")) bb=cc.hexdigest() if bb=="2f41599d1b13574d871267603d6dd8c3": # lover print("密码比对成功了哈哈哈") else: print("密码比对失败了哈哈哈") print("**********************************************************888") import hashlib aa=input("输入>>>") def md5(aa): ha= hashlib.md5(b'lover6666') ha.update(aa.encode("utf-8")) cc=ha.hexdigest() return cc if md5(aa)=="2f41599d1b13574d871267603d6dd8c3": print("密码比对成功了哈哈哈") else: print("密码比对失败了哈哈哈") print("**********************************************************888") import hmac h = hmac.new('wueiqi') h.update('hellowo') print(h.hexdigest())
import hashlib has=hashlib.md5() has.update(b"loveryuan") bb=has.hexdigest() print(bb) # a610558b66ba0696dafa8dfb97d28fde print("*******************************88") has=hashlib.md5() has.update(b"lover") has.update(b"yuan") # 直接看见代码结果 说明可以update可以追加 意思在上一个update继续摘要 bb=has.hexdigest() print(bb) # a610558b66ba0696dafa8dfb97d28fde # 对文件加密 来判断在上传防止别人修改文件 或者网络传输掉包 做 加密 就可以防止别人修改 因为加密数据是唯一性 # hashlib 经典用法做数据一次性校验 唯一不可逆 print("***************************************8") ha=hashlib.md5() with open("aa.py","rb")as f1: for row in f1: ha.update(row) print(ha.hexdigest()) print("***************************************8") ha=hashlib.md5() with open("aa.py","rb")as f1: ha.update(f1.read()) print(ha.hexdigest())
ha=hashlib.md5()
with open("aa.py","rb")as f1:
for row in f1:
ha.update(row)
print(ha.hexdigest())# f430afd90ee49a80666fd1966983dd22
ha=hashlib.md5()
with open("aa.py","rb")as f1:
ha.update(f1.read())
print(ha.hexdigest()) # f430afd90ee49a80666fd1966983dd22
2. logging
# 日志是来记录开发人员的对程序的操作 便于开发人员看 # 所对应的等级 # CRITICAL = 50 # FATAL = CRITICAL # ERROR = 40 # WARNING = 30 # WARN = WARNING # INFO = 20 # DEBUG = 10 # NOTSET = 0 import logging logging.basicConfig(filename='vv.log', format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p', level=10) logging.debug('debug') # 调试 logging.info('info')# 信息 logging.warning('warning') #警告 logging.error('error')# 错误 logging.critical('critical')# 危险 logging.log(10,'log')# def fun(): try: a=a+1 except Exception as e: print(e) logging.error(e) fun() print("******************************************************************************888") import traceback # 错误消息与追溯 将错误信息定位到每一行 模块 def fun(): try: a=a+1 except Exception as e: msg=traceback.format_exc() logging.error(msg) # 写入日志中 fun()
logging日志分类操作看图
![](https://img2018.cnblogs.com/blog/1679525/201906/1679525-20190629165642610-1349249051.jpg)
![](https://img2018.cnblogs.com/blog/1679525/201906/1679525-20190629165705404-88467195.jpg)