二十三.面向对象模块使用(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://www.cnblogs.com/Sup-to/p/11100097.html