zoukankan      html  css  js  c++  java
  • day25 Pyhton学习 MD5加密.日志

    一.MD5加密

        MD5是一种不可逆的加密算法. 它是可靠的. 并且安全的. 在python中我们不需要手写这一套算法. 只需要引入一个叫hashlib的模块就能搞定MD5的加密工作

    import hashlib
    
    def my_md5(s):
         obj = hashlib.md5(b"fjlksajflkjasfsalwer123dfskjf")#加盐,使md5加密不容易破解,md5()容易破解
         obj.update(s.encode("utf-8")) # 加密的必须是字节
         miwen = obj.hexdigest()
         return miwen
    # alex: 99fca4b872fa901aac30c3e952ca786d
    username = input("请输入用户名:")
    password = input("请输入密码:")
    # 数据存储的时候.
    # username: my_md5(password)
    # 假设现在的用户名和密码分别是
    # wusir: 99fca4b872fa901aac30c3e952ca786d ==> wusir: alex
    # 用户登录
    if username == "wusir" and my_md5(password) ==
    "99fca4b872fa901aac30c3e952ca786d":
         print("成功")
    else:
         print("失败")
     所以. 以后存密码就不要存明文了. 要存密文. 安全, 并且. 这里加的盐不能改来改去的.否则, 整套密码就都乱了

    二.日志

      1. 导入logging模块.

      2. 简单配置一下logging

      3. 出现异常的时候(except). 向日志里写错误信息.

    # filename: 文件名
    # format: 数据的格式化输出. 最终在日志文件中的样子
    # 时间-名称-级别-模块: 错误信息
    # datefmt: 时间的格式
    # level: 错误的级别权重, 当错误的级别权重大于等于leval的时候才会写入文件
    logging.basicConfig(filename='x1.txt',
                                     format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
                                    datefmt='%Y-%m-%d %H:%M:%S',
                                    level=0) # 当前配置表示 10以上的分数会被写⼊⽂件
    # CRITICAL = 50
    # FATAL = CRITICAL
    # ERROR = 40
    # WARNING = 30
    # WARN = WARNING
    # INFO = 20
    # DEBUG = 10
    # NOTSET = 0
    logging.critical("我是critical") # 50分. 最贵的
    logging.error("我是error") # 40分
    logging.warning("我是警告") # 警告 30
    logging.info("我是基本信息") # 20
    logging.debug("我是调试") # 10
    logging.log(2, "我是自定义") # 自定义. 看着给分        

    简单做个测试

    class JackError(Exception):
         pass
    for i in range(10):
     
        try:
             if i % 3 == 0:
                 raise FileNotFoundError("⽂件不在啊")
             elif i % 3 == 1:
                 raise KeyError("键错了")
             elif i % 3 == 2:
                 raise JackError("杰克Exception")
         except FileNotFoundError:
                 val = traceback.format_exc()
                 logging.error(val)
         except KeyError:
                 val = traceback.format_exc()
                 logging.error(val)
         except JackError:
                 val = traceback.format_exc()
                 logging.error(val)
         except Exception:
                 val = traceback.format_exc()
                 logging.error(val)
    最后, 如果你系统中想要把日志文件分开. 比如. 一个大项目, 有两个个系统, 那两个子系统要分开记录日志. 方便调试. 
    那怎么办呢? 注意. 用上面的basicConfig是搞不定的. 我们要借助文件助收(FileHandler),
    来帮我们完成日志的分开记录

    import logging
    # 创建一个操作日志的对象logger(依赖FileHandler)
    file_handler = logging.FileHandler('l1.log', 'a', encoding='utf-8') file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s"))
    logger1
    = logging.Logger('s1', level=logging.ERROR)
    logger1.addHandler(file_handler)
    logger1.error(
    '我是A系统')
    # 再创建一个操作日志的对象logger(依赖FileHandler)
    file_handler2 = logging.FileHandler('l2.log', 'a', encoding='utf-8') file_handler2.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s -%(levelname)s -%(module)s: %(message)s"))
    logger2
    = logging.Logger('s2', level=logging.ERROR) logger2.addHandler(file_handler2)
    logger2.error(
    '我是B系统')
  • 相关阅读:
    程序员的四个阶段
    2010Year Plans
    HttpHandler HttpModule入门篇
    Lucene.net索引文件的并发访问和线程安全性
    stream流写到MemoryStream内存流引发得问题
    ASP.NET 2.0 多文件上传小经验
    HTML 迷魂灯
    如何在Windows下搭建Android开发环境
    利用Lucene.net搭建站内搜索(4)数据检索
    数据加密和解密
  • 原文地址:https://www.cnblogs.com/pythonz/p/9975086.html
Copyright © 2011-2022 走看看