首页 > 其他分享 >hashlib/subprocess/logging模块

hashlib/subprocess/logging模块

时间:2022-10-27 18:34:16浏览次数:58  
标签:hashlib 加密 subprocess logging 日志 logger md5

内容概要

  • hashlib加密模块
  • subprocess模块
  • logging日志模块
  • 软件开发主要流程

加密详情

1.加密的意义:
	加密是指将明文数据转化程密文数据>>>>为了保证数据安全
2.如何判定数据是否是加密的:
	一串没有规律的字符串(数字、字母、符号)
   # 5d41402abc4b2a76b9719d911017c592
3.密文的长度越长代表加密算法(对数据的处理过程)越复杂
4.常见的加密算法:
	md5、sha系列、base64、hmac
5.加密算法基本操作
	import hashlib
    1.info = hashlib.md5()  # 选择加密算法 md5
    2.info.update(b'hello')  # 二进制明文数据
    3.res = info.hexdigest()  # 获取加密文
    print(res)  # 962012d09b8170d912f0669f6d7d9d07
    
1.'''加密算法不变,内容如果相同,结果一定相同'''
	 # md5.update(b'qwer~asdf~zxcv')  # 一次性传可以 869c821fd52cfd71e146a4306156ad0a

    md5.update(b'qwer')  # 分多次传也可以
    md5.update(b'~asdf')  # 分多次传也可以
    md5.update(b'~zxcv')  # 分多次传也可以
    res = md5.hexdigest()
	print(res)
    # 869c821fd52cfd71e146a4306156ad0a

2.'''加密之后的数据是无法反向解密的!'''
	我们只能通过明文正向转换为密文,不能从密文反向转化为明文
    常见的解密网站或过程,只是提前存储好了很多明文结果而已
    只要输入的是比较简单的字符信息就可以通过把字符匹配成密文进行比对
    
3.'''加盐处理》》》在明文里面添加一些干扰项'''
	    # 1.选择加密算法
    md5 = hashlib.md5()
    # 2.传入明文数据
    md5.update('公司设置的干扰项'.encode('utf8'))
    md5.update(b'hello python')  # 一次性传可以
    # 3.获取加密密文
    res = md5.hexdigest()
    print(res)  # e53024684c9be1dd3f6114ecc8bbdddc
    
    # 或者动态加盐:
    	干扰项是随机变化的
        我们可以在固定加盐处添加动态信息,这样更加可以保证数据的安全,比如当时时间以及用户名部分
 4.'''加密实战操作'''
	主要适用于
    1.用户密码加密
    2.文件安全性校验
    3.文件内容一致性校验
    4.大文件内容加密策略
    	大文件内容比较多,所以我们应该把文件分成几部分进行加密,每一部分获取一些字节,进行加密,加密完成后我们进行比对即可
        虽然不是100% 安全有效 但是也是节省时间效率以及安全性保障最优化的方法了

subprocess模块

subprocess模块是模拟操作系统终端 执行命令并获取结果
import subprocess

res = subprocess.Popen(
	'ipconfig',  # 操作系统要执行的命令
      shell = True, # 固定配置
      stdin=subprocess.PIPE,  # 输入命令
      stdout=subprocess.PIPE, # 输出结果
)
print('正确结果:',res.stdout.read().decode('gbk'))  # 因为中国电脑系统底层编码还剩gbk不是utf8,输出内容也是二进制字符串所以我们需要decode方法解码

我们输入正确的指令就会给我们打印这个指令返回的结果
如果输入错误就不能正确显示结果

logging模块

logging模块主要是日志功能
1.如何理解日志
	日志可以看作为记录用户操作的(历史记录)
2.日志的级别有:
 	info
    debug
    warning
    error
    critical
'''我们可以看一下日志模块的操作'''
import logging
file_handler = logging.FileHandler(filename='a1.log', mode='a', encoding='utf8')
logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S %p',
    handlers=[file_handler, ],
    level=logging.ERROR
)
logging.error('我是真帅~')

basicConfig 日志基础配置
FileHandler 文件处理
logging.xxxx 日志等级选择

日志的组成

1.产生日志
2.过滤日志
	基本不用,因为我们在产生日志的时候就可以配控制想要的日志内容
3.日志格式
4.输出日志
import logging

    1.日志的产生      logger对象
    	logger = logging.getLogger('日志名字')
    2.日志的过滤
    	剔除不需要的数据
    3.输出日志
    hd1 = logging.FileHeandler('文件名.log',encoding='utf8') # 输出到文件中
    hd2 = logging.StreamHandler()   # 输出到终端
    4.# 日志格式:
	fm1 = logging.Formatter(
        fmt='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S %p',
)
    fm2 = logging.Formatter(
            fmt='%(asctime)s - %(name)s:  %(message)s',
            datefmt='%Y-%m-%d',
    )	
    
5.给logger对象绑定handler对象
logger.addHandler(hd1)
logger.addHandler(hd2)
logger.addHandler(hd3)
# 6.给handler绑定formmate对象
hd1.setFormatter(fm1)
hd2.setFormatter(fm2)
hd3.setFormatter(fm1)
# 7.设置日志等级
logger.setLevel(10)  # debug
# 8.记录日志
logger.debug('写了半天 好累啊 好热啊')

日志配置字典

import logging
import logging.config
# 定义日志输出格式 开始
standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \
                  '[%(levelname)s][%(message)s]'  # 其中name为getlogger指定的名字
simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
# 自定义文件路径
logfile_path = 'a3.log'
LOGGING_DIC = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': standard_format
        },
        'simple': {
            'format': simple_format
        },
    },
    'filters': {},  # 过滤日志
    'handlers': {
        # 打印到终端的日志
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',  # 打印到屏幕
            'formatter': 'simple'
        },
        # 打印到文件的日志,收集info及以上的日志
        'default': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件
            'formatter': 'standard',
            'filename': logfile_path,  # 日志文件
            'maxBytes': 1024 * 1024 * 5,  # 日志大小 5M
            'backupCount': 5,
            'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
        },
    },
    'loggers': {
        # logging.getLogger(__name__)拿到的logger配置
        '': {
            'handlers': ['default', 'console'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
            'level': 'DEBUG',
            'propagate': True,  # 向上(更高level的logger)传递
        },  # 当键不存在的情况下 (key设为空字符串)默认都会使用该k:v配置
        # '购物车记录': {
        #     'handlers': ['default','console'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
        #     'level': 'WARNING',
        #     'propagate': True,  # 向上(更高level的logger)传递
        # },  # 当键不存在的情况下 (key设为空字符串)默认都会使用该k:v配置
    },
}
logging.config.dictConfig(LOGGING_DIC)  # 自动加载字典中的配置
# logger1 = logging.getLogger('购物记录')
# logger1.warning('尊敬的VIP客户 晚上好 您又来啦')
# logger1 = logging.getLogger('注册记录')
# logger1.debug('注册成功')
logger1 = logging.getLogger('红浪漫顾客消费记录')
logger1.debug('慢男 猛男 骚男')

标签:hashlib,加密,subprocess,logging,日志,logger,md5
From: https://www.cnblogs.com/ddsuifeng/p/16833275.html

相关文章

  • 内置模块之logging模块--日志模块
    logging模块--日志模块日志就是记录行为举止的文件,在程序中可以在执行到某些情况时对其进行自动记录。而logging模块就给我们提供了一套记录体系。它有五层记录等级:debu......
  • day23hashlib加密模块
    hashlib加密模块subprocess模块logging日志模块软件开发主要流程ATM项目分析hashlib加密模块1.何为加密 将明文数据处理成密文数据让人无法看懂2.为什么加密 ......
  • 内置模块之hashlib、subprocess、logging
    hashlib加密模块subprocess模块logging日志模块软件开发主要流程ATM项目分析今日内容详细hashlib加密模块1.什么是加密 将明文数据处理成加密文数据,让人无法看懂......
  • hashlib加密模块,subprocess模块,logging日志模块
    目录hashlib加密模块,subprocess模块,logging日志模块今日内容概要今日内容详细hashlib加密模块加密补充说明subprocess模块logging日志模块日志的组成日志配置字典日志实战......
  • hashlib、subprocess、logging、软件开发流程、项目分析
    目录今日内容概要今日日内容详细hashlib加密模块加密补充说明subprocess模块logging日志模块日志的组成日志配置字典homework今日内容概要hashlib加密模块subprocess模......
  • 内置模块之hashlib模块--加密功能
    hashlib模块hashlib铺垫知识hash指加密,我们将一串字符串明文加密为密文,使这段密文难以被识别,也无法倒推成明文,这就是加密。hashlib模块所提供的加密,如我们最常用的md5加......
  • hashlib加密模块,subprocess模块,logging日志模块
    hashlib加密模块1.何为加密 将明文数据处理成密文数据让人无法看懂2.为什么加密 保证数据的安全3.如何判断数据是否是加密的 一串没有规律的字符串(数字、字母、符......
  • Python 中 logging 模块的使用
    Python中logging模块的使用logging模块简介Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用。这个模块提供不同的日志级别,并可以采用不同......
  • 解决django.core.exceptions.ImproperlyConfigured: Requested setting LOGGING_CONFI
    在开发Django项目时,调整了django文件目录结构同时配置完自己的配置文件路径后在终端执行pythonmanage.pyrunserver命令启动django项目时,报以下错误:django.core.ex......
  • 关于subprocess运行中主程序被强制退出
    程序在运行时,主程序被强退,subprocess开启的子进程依然存在。注意,这里的强退,指的是kill-9级别.关于信号级别看这里https://blog.csdn.net/taoxicun/article/details/12......