zoukankan      html  css  js  c++  java
  • 摘要,日志

    1.hashlib 模块:

      由于数据的不安全性,为了保证用户的信息绝对安全,所有所有人的账号密码不能以明文的形式存储,

      而是经过适当的处理以密文的形式存储.

      hashlib对同一个字符串在不同的语言,不同的环境(操作系统,版本,时间)中加密得到的是同一个密文串,不同的字符串得到的密文是不一样的

      这个算法不可逆

    2.摘要算法:

    # 原始加密:
    import hashlib
    obj = hashlib.md5()
    obj.update('666'.encode('utf-8'))
    print(obj.hexdigest())
    # 加盐
    obj = hashlib.md5('123'.encode('utf-8'))
    obj.update('666'.encode('utf-8'))
    print(obj.hexdigest())
    # 动态加盐 ,避免恶意撞库
    name = 'liming'
    pwd = '123456'
    def login(name,passwd):
        obj = hashlib.md5(name.encode('utf-8'))
        obj.update(pwd.encode('utf-8'))
        ret = obj.hexdigest()
        with open('t1',) as f:
            for line in f:
                uname,paswd = line.strip().split()
                if name == uname and paswd == ret:
                    return True
            else:
                return False
    rot = login(name,pwd)
    

    3.hashlib摘要算法,多种算法中常用的两种md5,sha1.

      md5是32位16进制的数字字符组成的字符串

        特点:应用最广泛的摘要算法.

          效率高,相对不复杂,安全性也相对低

      sha1及其相关系列摘要算法,40位16进行的数字字符组成的字符串.

          特点:比md5算法复杂,且sha的n值越大,算法越复杂,耗时越久,效率越低,安全性越高

    4.文件的一致性校验:

      下载的是视频,或者大文件,应该以rb的形式来读,读出来的都是bytes

      不能按行来读,也不能一次性读出来:

    import os
    import hashlib
    path = r'E:1_pycharmvenvsum_01_python.py'
    def sum_size(path,buffer=1024):
        obj = hashlib.md5()
        s_size = os.path.getsize(path)
        with open(path, 'rb') as f:
            while s_size:
                count = f.read(buffer)
                s_size -= len(count)#d41d8cd98f00b204e9800998ecf8427e
                ret = obj.hexdigest()
            return ret
    osd = sum_size(path)
    print(osd)
    

    5.configparser 文件配置

    6.logging日志:

      1,给用户看:购物记录'''

      2.给内部人员看:程序出错时帮记录过程,排除错误

      3,给非技术看:谁在什么时候做了什么操作

    7.日志级别:

    import logging
    logging.basicConfig(level=logging.INFO) #调节日志打印级别
    logging.debug('debug message') #计算或工作的细节
    logging.info('info message') #记录用户的一些增删改查的操作
    logging.warning('warning message') #警告操作
    logging.error('error message') #错误操作
    logging.critical('critical message') #批判的,直接导致程序出错退出的
    

      日志简单配置

    import logging
    logging.basicConfig(level=logging.INFO,format='%(asctime)s %(filename)s 
                        [line:%(lineno)d]%(levelname)s%(message)s',
                        datefmt = '%c',
                        filename ='test.log')
    logging.warning('warning message') #警告操作
    logging.error('error message') #
    logging.info('错误操作')
    

      对象的配置:向文件和屏幕输出内容

    # 先创建一个log对象 logger
    logger = logging.getLogger()
    logger.setLevel(logging.DEBUG)
    # 还要创建一个控制文件输出的文件操作符
    fh = logging.FileHandler('mylog.log')
    # 还要创建一个控制屏幕输出的屏幕操作符
    sh = logging.StreamHandler()
    # 要创建一个格式
    fmt = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    fmt2 = logging.Formatter('%(asctime)s - %(name)s[line:%(lineno)d] - %(levelname)s - %(message)s')
    
    # 文件操作符 绑定一个 格式
    fh.setFormatter(fmt)
    # 屏幕操作符 绑定一个 格式
    sh.setFormatter(fmt2)
    sh.setLevel(logging.WARNING)
    # logger对象来绑定:文件操作符, 屏幕操作符
    logger.addHandler(sh)
    logger.addHandler(fh)
    

      

      

  • 相关阅读:
    小事引发的思考
    C++程序设计教程学习(0)-引子
    Cygwin安装
    PATHEXT环境变量简介
    Oracle Real Application Cluster
    SQLNET.AUTHENTICATION_SERVICES参数说明
    用神经网络拟合数据
    用PyTorch自动求导
    用PyTorch做参数估计
    深度学习基础(概念性)
  • 原文地址:https://www.cnblogs.com/lijinming110/p/9600939.html
Copyright © 2011-2022 走看看