博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模块相关
阅读量:5314 次
发布时间:2019-06-14

本文共 4195 字,大约阅读时间需要 13 分钟。

加密:hashlib

  hashlib模块用于加密的相关操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法

import hashlib# ############   md5   ################hash = hashlib.md5()hash.update(bytes('123456', encoding='utf-8'))    #将字节用md5加密print(hash.hexdigest())         #得到加密后的密文print(hash.digest())# ############   sha1   ################hash = hashlib.sha1()hash.update(bytes('admin', encoding='utf-8'))print(hash.hexdigest())# ############   sha256   ################hash  = hashlib.sha256()hash.update(bytes('admin', encoding='utf-8'))print(hash.hexdigest())# ############   sha384   ################hash = hashlib.sha384()hash.update(bytes('admin', encoding='utf-8'))print(hash.hexdigest())# ############   sha512   ################hash = hashlib.sha256()hash.update(bytes('admin', encoding='utf-8'))print(hash.hexdigest())
hashlib加密

  以上加密算法不可逆,但是可以通过撞库的方式反解,所以需要对加密算法自定义key再加密.

# ############   md5(加盐)   ################SALT = b'159654'def md5(pwd):    #实例化对象    obj = hashlib.md5(SALT)    #写入要加密的字节    obj.update(pwd.encode('utf-8'))    #获取密文    return obj.hexdigest()user = input('请输入用户名:')pwd = input('请输入密码:')#此处测试,将用户名设置为admin,密码为123456,实际使用中一定不要用弱口令if user == 'admin' and md5(pwd) == 'd849b096e540f82f95556811f5743a74':  #此密文为123456加盐后的密文    print('登录成功')else:    print('登录失败')# ############   md5(加盐)   ################SALT = b'159654'hash = hashlib.md5(SALT)hash.update(bytes('123456', encoding='utf-8'))print(hash.hexdigest())
加盐

  python内部还内置hmac模块.hmac模块内部会对我们创建的key和内容进行进一步的处理然后再加密.

import hmach = hmac.new(bytes('159654', encoding='utf-8'))h.update(bytes('123456', encoding='utf-8'))print(h.hexdigest())
hmac

日志:logging

  logging模块用于编写记录日志并且线程安全的模块

  单日志文件:

import logginglogging.basicConfig(filename='log.txt',                    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')
单文件日志
CRITICAL = 50FATAL = CRITICALERROR = 40WARNING = 30WARN = WARNINGINFO = 20DEBUG = 10NOTSET = 0
日志等级

  只有当前等级大于等于日志等级时,日志文件才会记录.

上面的方法,只能将日志文件记录在单文件中,想要设置多个日志文件,logging.basicConfig无法完成,需要自定义文件和日志操作对象.

  多日志文件:

#定义文件file_1 = logging.FileHandler('file_1.log', 'a', encoding='utf-8')fmt = logging.Formatter(fmt='%(asctime)s - %(name)s - %(levelname)s - %(module)s:   %(message)s')file_1.setFormatter(fmt)file_2 = logging.FileHandler('file_2.log', 'a', encoding='utf-8')fmt = logging.Formatter()file_2.setFormatter(fmt)#定义日志logger1 = logging.Logger('log1', level=logging.ERROR)logger1.addHandler(file_1)logger1.addFilter(file_2)#写日志logger1.critical('123456')
多日志文件1
#定义文件file_2_1 = logging.FileHandler('12_1.log', 'a')fmt = logging.Formatter()file_2_1.setFormatter(fmt)#定义日志logger2 = logging.Logger('s2', level=logging.INFO)logger2.addFilter(file_2_1)
多日志文件2

  使用logger1写日志文件时,会将相应的内容写入file_1.log和file_2.log文件中

  使用logger2写日志文件时,会将相应的内容写入l2_1.log文件中

约束

  通过主动抛异常约束,必须实现某功能

class BaseMessage(object):    def send(self, x1):        '''        必须继承BaseMessage,然后其中必须编写send方法,用于完成具体的功能        '''        raise NotImplementedError('send()必须被重新编写')class Email(BaseMessage):    def send(self, x1):        '''必须继承BaseMessage,然后其中编写send方法,用于完成具体的功能'''        passobj = Email()obj.send(1)
主动抛异常约束

  如果派生类没有对基类方法进行重新编写,就会抛异常.  

  还可以通过抽象类和抽象方法进行约束

from abc import ABCMeta,abstractmethodclass Base(metaclass=ABCMeta):  #抽象类    def f1(self):        print(123)    @abstractmethod    def f2(self):               #抽象方法        passclass Foo(Base):    def f2(self):        print(666)obj = Foo()obj.f2()
通过抽象类抽象方法约束

自定义异常:

#自定义异常class MyException(Exception):    def __init__(self, code, msg):        self.code = code        self.msg = msgtry:    raise MyException(1000, '操作异常')except KeyError as obj:    print(obj, 1111)except MyException as obj:    print(obj, 2222)except Exception as obj:    print(obj, 3333)#自定义异常class MyException(Exception):    def __init__(self, code, msg):        self.code = code        self.msg = msgtry:    raise MyException(1000, '操作异常')except MyException as obj:    print(obj.code, obj.msg)
自定义异常

 

转载于:https://www.cnblogs.com/Virous1887/p/9567187.html

你可能感兴趣的文章
转载 python多重继承C3算法
查看>>
【题解】 bzoj1597: [Usaco2008 Mar]土地购买 (动态规划+斜率优化)
查看>>
css文本溢出显示省略号
查看>>
git安装和简单配置
查看>>
面向对象:反射,双下方法
查看>>
鼠标悬停提示文本消息最简单的做法
查看>>
Java面向对象重要关键字
查看>>
课后作业-阅读任务-阅读提问-2
查看>>
面向对象设计中private,public,protected的访问控制原则及静态代码块的初始化顺序...
查看>>
fat32转ntfs ,Win7系统提示对于目标文件系统文件过大解决教程
查看>>
Awesome Adb——一份超全超详细的 ADB 用法大全
查看>>
shell cat 合并文件,合并数据库sql文件
查看>>
Android 将drawable下的图片转换成bitmap、Drawable
查看>>
介绍Win7 win8 上Java环境的配置
查看>>
移动、联通和电信,哪家的宽带好,看完你就知道该怎么选了!
查看>>
Linux设置环境变量的方法
查看>>
Atitit.进程管理常用api
查看>>
构建自己的项目管理方案
查看>>
利用pca分析fmri的生理噪声
查看>>
div水平居中且垂直居中
查看>>