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

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

一:hashlib干嘛用的

==对字符加密,其实就是一个自定义的字符编码表==

原来的0和1转换成字符,而现在的 是字符转换成另一个字符

m=hashlib.md5()pwd=b'123'm=update(pwd)print(m.hexdigest())

它的特点

  • 1 hash 加密之后的长度一样6
  • 2 hash加密的东西一样则哈希结果一样
  • 3 如果使用同一个哈希字符编码表,不断地哈希结果会累加
# m=hashlib.md5()   比较难破解# pwd='hello world'.encode('utf-8')  是二进制形式

破解密码举例

密码是其中的一个:pwd_list = [    'hash3714',    'hash1313',    'hash94139413',    'hash123456',    '123456hash',    'h123ash',]def break_pwd(hash_pwd):    for pwd in pwd_list:        m=hashlib.md5()        m.update(pwd.encode('utf_8'))        if m.hexdigest()==hash_pwd:            return pwdif __name__=='__main__':    hash_pwd='0562b36c3c5a3925dbe3c4d32a4f2ba2'    pwd=break_pwd(hash_pwd)    print('这人的密码是:',pwd)

加盐处理

import hmacm=hmac.new(b'123')  #加盐处理m.update(b'123')print(m.hexdigest())   # a31dce88633f3393f6c475525ff48301m.update(b'456')print(m.hexdigest())    # a31dce88633f3393f6c475525ff48301m=hmac.new(b'123')m.update(b'123456')print(m.hexdigest())    #a31dce88633f3393f6c475525ff48301m=hmac.new(b'456')m.update(b'123456')print(m.hexdigest())    ## 036891f8964d543c01f4718280d5853em=hmac.new(b'123123456')print(m.hexdigest())    ## 643e0c01cbc74229a8c29128b8634287
import uuidfor i in range(10):    print(uuid.uuid4())     #永不重复,因为它是按照时间来生成的

二:logging模块

有何作用

相当于记录日记(把重要的记录下来)

v3 logging模块包含四种角色:logger、filter、Formatter对象、Handle

1. logger 你是哪个版本的日志2. filter,不用管3. handler,是保存在文件中,还是打印到屏幕里4. formatter,控制日志的格式
1 logger:产生日记的对象        logger=logging.getlogger('bank')    2 Filter:过滤日记的对象(忽略)    3 Formatter 对象 :控制日记的格式f1 = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',                       datefmt='%Y-%m-%d %H:%M:%S %p', )f2 = logging.Formatter('%(asctime)s :  %(message)s',                       datefmt='%Y-%m-%d %H:%M:%S %p', )f3 = logging.Formatter('%(name)s %(message)s', )4 Handlle: 保存在文件中,还是打印到屏幕上        t1 = logging.FileHandler('t1.log')  # 往文件中打印t2 = logging.FileHandler('t2.log')  # 往文件中打印sm = logging.StreamHandler()  # 往屏幕打印5. formatter绑定到handler里面去t1.setFormatter(f1)t2.setFormatter(f2)sm.setFormatter(f3)6 formatter 绑定到logger里面去logger.addHandler(t1)logger.addHandler(t2)logger.addHandler(sm) 7.设置打印级别logger.setLevel(10)  # 控制着全部,先走全部,再走单个的,如果不设置,默认30,必须得设置t1.setLevel(20)t2.setLevel(30)sm.setLevel(40) 8.测试logger.info('123')logger.debug('123')logger.warning('123')logger.error('123')logger.critical('123')

转载于:https://www.cnblogs.com/zhuyuanying123--/p/11005549.html

你可能感兴趣的文章
H3C防火墙的dns-map功能
查看>>
iOS 9 点击右上角退回到上一App时 屏幕会闪一下
查看>>
我的友情链接
查看>>
数组与指针(一)
查看>>
I/O模型分类
查看>>
智能照明控制系统
查看>>
Shiro的Demo示例
查看>>
RISC领域ARM不是唯一
查看>>
数据库容灾的最高境界
查看>>
spark命令
查看>>
mysql explain中的select tables optimized away---(二)
查看>>
安装PHP5和PHP7
查看>>
邹承鲁院士谈学术文献阅读
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
android模仿铃声选择功能
查看>>
我的友情链接
查看>>
配置DHCP服务器
查看>>
trim triml trimr
查看>>