• 模块 hashlib和logging


    hashlib模块

    用处:用于文件加密,本质是一个自定义的字符编码表

    原来是0和1转换为字符,现在是字符转换成另一种字符

    前身是美国的md5加密密码锁,用于加密军事信息,可惜被中国一个神秘的博士给破解了,并发表出来,博士现在成功成为科学院院士

    加密方法都是不可逆的,只能碰撞或者破解

    名称:摘要算法,哈希算法,散列算法

    通过一个函数,将任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)

    这个函数为单向函数,单向很容易,反推很困难

    import hashlib
    md5 = hashlib.md5()
    md5.update('i am big one')
    print md5.hexdigest()
    1. hash加密之后长度一样

    2. hash加密东西一样则哈希结果一样

    3. 如果使用同一个哈希字符编码表,不断地哈希结果会增加

    # 破解密码
    # 他的密码一定是其中一个
    pwd_list = [
       'haxi12312',
       '21312412',
       'asda1231221',
       '1qweq11',
    ]

    def break_pwd(hash_pwd):
       for pwd in pwd_list:
           m = hashlib.md5()
           m.update(pwd.encode('utf8'))
           if m.hexdigest() == hash_pwd:
               return pwd
           
    if __name__ == '__main__':
       #密码hash后的值
       hash_pwd = '0562b36c3c5a3925dbe3c4d32a4f2ba2'
       pwd = break_pwd(hash_pwd)
       print('这个用户密码是:',pwd)# 和print(f'这个用户密码是{pwd}')效果一样

     

     

    hmac python中自带的模板:加盐处理

    m = hmac.new(b'123')
    m.update(b'12345')
    print(m.hexdigest())

    uuid模板,因为按照时间来生成,所以永不重复

    import uuid
    for i in range(10):
       print(uuid.uuid4())

     

    logging模板

    用处:记录日记(常用于记录程序的相关信息)

    info(没有任何问题)--->debug(没有任何问题)--->warning(可以去做也可以不做)--->error(必须得做)--->critical(程序崩溃)

    V1级别

    name = input('name:>>')
    total_prize = input('total_prize:>>>')

    logging.info(f'{name}消费了{total_prize}元') #10
    logging.debug(f'{name}消费了{total_prize}元') #20
    logging.warning(f'{name}消费了{total_prize}元') #30
    logging.error(f'{name}消费了{total_prize}元') #40
    logging.critical(f'{name}消费了{total_prize}元') #50
    1. 把日志保存到文件中

    2. info的信息也要记录下来

    V2级别

    import logging

    logging.basicConfig(filename='access.log',  #指定日志保存文件名
                       format ='%(asctime)s-%(name)s-%(levername)s-%(module)s:%(message)s',  # 指定日志格式
                       datefmt='%Y-%m-%d %H:%M:%S %p', # 时间
                       level=10 #控制保存的最低等级
                       name = input('name>>')total_prize = input('total_price>>')

                       
                                           

                       logging.info(f'{name}消费了{total_prize}元') #10
                       logging.debug(f'{name}消费了{total_prize}元') #20
                       logging.warning(f'{name}消费了{total_prize}元') #30
                       logging.error(f'{name}消费了{total_prize}元') #40
                       logging.critical(f'{name}消费了{total_prize}元') #50

    1. 对于不同的项目需要弄不同,不灵活

    2. 一直往文件写入,不可控不能打印

    3. 参数全部固定不变

    V3版本(*****)

    1. logger 你是哪个版本的日志

    2. filter 不用管

    3. handler 是保存在文件中,还是打印到屏幕里

    4. formatter控制日志的格式

    # 1. logger 你是哪个版本的日志
    logger = logging.gerLogger('bank')
    # 2. filter不用管
    # 3. handler是保存在文件中,还是打印到屏幕里
    t1 = logging.FileHandler('t1.log') #往文件中打印
    t2 = logging.FileHandler('t2.log') #往文件中打印
    sm = logging.StreamHandler()       # 往屏幕打印

    # 4. 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',)

    # 5. formatter 绑定到handler里面去
    t1.setFormatter(f1)
    t2.setFormatter(f2)
    sm.setFormatter(f3)

    # 6.handler 绑定到logger里面去
    logger.addHandler(t1)
    logger.addHandler(t2)
    logger.addHandler(sm)

    # 7. 设置打印级别
    #logger.setLevel(10)# 控制着全部,先走全部,再走单个,如果不设置,默认30,必须得设置(因为不设置就和V2没区别了,依旧会有繁杂等问题)
    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')

     

     

  • 相关阅读:
    IsNull和IsEmpty的区别
    常用正则表达式
    VBScript函数
    SqlCommand类
    ubuntu更新grub
    例解 autoconf 和 automake 生成 Makefile 文件[转+个人修改]
    gEdit: 打造简洁,小巧的编程环境[转]
    Linux 常用命令
    GTK+ 简介
    “菜单” (menubar)和“工具栏”(toolbars)
  • 原文地址:https://www.cnblogs.com/zrx19960128/p/11006140.html
Copyright © 2020-2023  润新知