一、hashlib加密模块

1.何为加密

将明文数据处理成密文数据 让人无法看懂

2.为什么加密

保证数据的安全

3.如何判断数据是否是加密的

一串没有规律的字符串(数字、字母、符号)

4.密文的长短有何讲究

密文越长表示使用的加密算法(数据的处理过程)越复杂

5.常见的加密算法有哪些

md5、base64、hmac、sha系列

6.加密算法基本操作

import hashlib

# 1.选择加密算法
md5 = hashlib.md5() # 2.传入明文数据
md5.update(b'hello') #(update只能接受bytes类型数据)
# 3.获取加密密文 
res = md5.hexdigest()
print(res) # 5d41402abc4b2a76b9719d911017c592

加密补充说明

1. 加密算法不变,内容如果相同,那么结果肯定相同

一串数据,通过一次性传与分开传,加密得到的结果是一样的。只要还没有调取加密算法获取密文,就会等着数据全部上传完再加密

# 1.选择加密算法
md5 = hashlib.md5() # 2.传入明文数据
md5.update(b'hello~world~python~666') # 一次性传可以 md5.update(b'hello') # 分多次传也可以
md5.update(b'~world') # 分多次传也可以
md5.update(b'~python~666') # 分多次传也可以 # 3.获取加密密文
res = md5.hexdigest()
print(res) # af9a44cbf7784b1a58e23c0a40df2bbc

2. 加密之后的结果是无法反解密的

只能从明文到密文正向推导,无法从密文到明文反向推导

常见的解密过程其实是提前猜测了很多种结果

3. 加盐处理:在对明文数据做加密处理过程前添加一些干扰项

# 1.选择加密算法
md5 = hashlib.md5() # 2.传入明文数据
md5.update('公司设置的干扰项'.encode('utf8'))
md5.update(b'hello python') # 3.获取加密密文
res = md5.hexdigest()
print(res) # e53024684c9be1dd3f6114ecc8bbdddc
 

4. 动态加盐

在对明文数据做加密处理过程前添加一些变化的干扰项
eg: 当前时间、用户名部分...

5. 加密实战操作

1.用户密码加密

2.文件安全性校验

3.文件内容一致性校验

import hashlib

md5 = hashlib.md5()
with open(r'b.txt','rb') as f:
for line in f:
md5.update(line)
res = md5.hexdigest()
print(res) # 089e4c81ec2100822c0dece627b3091b

6. 大文件内容加密
截取部分内容加密即可

# 读取文件总大小
res = os.path.getsize(r'a.txt') # 指定分片读取策略(读几段 每段几个字节) 10 f.seek()
read_method = [0,res//4,res//2,res] 

二、subprocess模块

模拟操作系统终端,执行命令并获取结果

import subprocess

res = subprocess.Popen(
'asdas', # 操作系统要执行的命令
shell=True, # 固定配置
stdin=subprocess.PIPE, # 输入命令
stdout=subprocess.PIPE, # 输出结果
) print('正确结果', res.stdout.read().decode('gbk')) # 获取操作系统执行命令之后的正确结果 print('错误结果', res.stderr) # 获取操作系统执行命令之后的错误结果

三、logging日志模块

1. 什么是日志?

日志是一种可以卓总某些软件运行时所发生事情的方法。软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情。一个事件可包含可选变量数据的消息来描述。此外,时间也有重要性的概念,这个重要性也可以被称为严重性级别(level)。

2. 日志的等级

日志等级(level) 描述
DEBUG 最详细的日志信息,典型应用场景是 问题诊断
INFO 信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
WARNING 当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
ERROR 由于一个更严重的问题导致某些功能不能正常运行时记录的信息
CRITICAL 当发生严重错误,导致应用程序不能继续运行时记录的信息

默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG),默认的日志格式为日志级别:Logger名称:用户输出消息。

import logging

logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')

3. 日志模块要求

代码无需掌握,但是得会CV并稍作修改

灵活配置日志级别,日志格式,输出位置:

import logging

file_handler = logging.FileHandler(filename='x1.log', mode='a', encoding='utf-8',)
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('你好')

日志的组成

1.产生日志

2.过滤日志

基本不用,因为在日志产生阶段就可以控制想要的日志内容

3.输出日志

4.日志格式

import logging

# 1.日志的产生(准备原材料)        logger对象
logger = logging.getLogger('购物车记录') # 2.日志的过滤(剔除不良品) filter对象>>>:可以忽略 不用使用 # 3.日志的产出(成品) handler对象
hd1 = logging.FileHandler('a1.log', encoding='utf-8') # 输出到文件中
hd2 = logging.FileHandler('a2.log', encoding='utf-8') # 输出到文件中
hd3 = logging.StreamHandler() # 输出到终端 # 4.日志的格式(包装) format对象
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配置,有以下两种选择

# 1.如果想要同时记录多条信息,选择此条(前面的键设置为空)
'': {
'handlers': ['default', 'console'], # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
'level': 'DEBUG',
'propagate': True, # 向上(更高level的logger)传递
}, # 当键不存在的情况下 (key设为空字符串)默认都会使用该k:v配置 # 2. 键固定,则只能记录购物车信息
'购物车记录': {
'handlers': ['default','console'], # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
'level': 'WARNING',
'propagate': True, # 向上(更高level的logger)传递
}, # 当键不存在的情况下 (key设为空字符串)默认都会使用该k:v配置
},
} logging.config.dictConfig(LOGGING_DIC) # 自动加载字典中的配置
logger1 = logging.getLogger('购物车记录') # 数据值与上述loggers中’2‘的键值一致
logger1.warning('尊敬的VIP客户 晚上好 您又来啦') logger1 = logging.getLogger('注册记录')
logger1.debug('jason注册成功')

logger1 = logging.getLogger('顾客消费记录')
logger1.debug('小萝莉 小可爱 小仙女') # 同时记录购物车记录、注册记录、顾客消费记录的话loggers中要选择’1‘

常用模块二——hashlib加密模块,subprocess模块,logging日志模块的更多相关文章

  1. hashlib加密模块、logging日志模块

    hashlib模块 加密:将明文数据通过一系列算法变成密文数据 目的: 就是为了数据的安全 基本使用 基本使用 import hashlib # 1.先确定算法类型(md5普遍使用) md5 = ha ...

  2. 约束、自定义异常、hashlib模块、logging日志模块

    一.约束(重要***) 1.首先我们来说一下java和c#中的一些知识,学过java的人应该知道,java中除了有类和对象之外,还有接口类型,java规定,接口中不允许在方法内部写代码,只能约束继承它 ...

  3. 包,logging日志模块,copy深浅拷贝

    一 包 package 包就是一个包含了 __init__.py文件的文件夹 包是模块的一种表现形式,包即模块 首次导入包: 先创建一个执行文件的名称空间 1.创建包下面的__init__.py文件的 ...

  4. python 自动化之路 logging日志模块

    logging 日志模块 http://python.usyiyi.cn/python_278/library/logging.html 中文官方http://blog.csdn.net/zyz511 ...

  5. Python logging(日志)模块

    python日志模块 内容简介 1.日志相关概念 2.logging模块简介 3.logging模块函数使用 4.logging模块日志流处理流程 5.logging模块组件使用 6.logging配 ...

  6. pyhton——logging日志模块的学习

    https://www.cnblogs.com/yyds/p/6901864.html 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模 ...

  7. logging日志模块配置

    logging日志模块 日志级别 日志一共分成5个等级,从低到高分别是: 1)DEBUG 2)INFO 3)WARNING 4)ERROR 5)CRITICAL 说明: DEBUG:详细的信息,通常只 ...

  8. logging日志模块详细,日志模块的配置字典,第三方模块的下载与使用

    logging日志模块详细 简介 用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么 了,但是当我需要看大量的地方或者在一个文件中查看的时 ...

  9. logging 日志模块学习

    logging 日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪,所以还是灰常重要滴,下面我就来从入门到放弃的系统学习一下日志既可以在屏幕上显示,又可以在文件中体现. ...

  10. logging日志模块

    为什么要做日志: 审计跟踪:但错误发生时,你需要清除知道该如何处理,通过对日志跟踪,你可以获取该错误发生的具体环境,你需要确切知道什么是什么引起该错误,什么对该错误不会造成影响. 跟踪应用的警告和错误 ...

随机推荐

  1. ofd格式文件转换成pdf格式的方法

    ofd格式文件很多人还比较陌生,很多人接收到文件都不知如何打开阅读,把文件发给对方,还需要对方安装个专门的阅读软件,我们还有另一个办法,就是将OFD文件转换为PDF格式文件,然后把PDF格式文件发给对 ...

  2. List接口中的常用方法

    void add(int index, Object ele):在index位置插入ele元素boolean addAll(int index, Collection eles):从index位置开始 ...

  3. Dubbo 原理和机制详解 (非常全面)

    Dubbo 是一款Java RPC框架,致力于提供高性能的 RPC 远程服务调用方案.作为主流的微服务框架之一,Dubbo 为开发人员带来了非常多的便利. 大家好,我是 mikechen,专注分享「互 ...

  4. SpringCloud(二) - Eureka注册中心,feign远程调用,hystrix降级和熔断

    1.项目模块介绍 2. 父项目 主要依赖 spring-cloud 的 版本控制 <properties> <!-- springCloud 版本 --> <scd.ve ...

  5. C#--@符号的使用(逐字字符串,跨行,声明关键字变量名)

    ---对字符串的使用 @可以定义逐字字符串 注意:@只对字符串常量有用 1)不需要用\\来转义非转义符号的\号   例如:@"\"="\\"2)可以实现多行字符 ...

  6. 现代 CSS 指南 -- at-rule 规则扫盲

    大部分同学都用过 CSS 的屏幕宽度媒体查询,像是这样: @media screen and (min-width: 900px) { div { padding: 1rem 3rem; } } 这里 ...

  7. Python基础部分:1、typora软件和对计算机的认识

    目录 一.typora软件 1.安装 2.markdown语法 二.计算机的本质 1.进制数 三.计算机五大组成部分概要 1.控制器 2.运算器 3.存储器 4.输入设备 5.输出设备 一.typor ...

  8. git ignore忽略规则

    目录 Git 忽略文件提交的方法 Git 忽略规则 Git 忽略规则优先级 Git 忽略规则匹配语法 常用匹配示例 多级目录忽略规则设置 .gitignore规则不生效 参考文章 Git 忽略文件提交 ...

  9. python中的super()是什么?

    技术场景:python中的super,名为超类,可以简单的理解为执行父类的__init__函数.由于在python中不论是一对一的继承,还是一子类继承多个父类,都会涉及到执行的先后顺序的问题.那么本文 ...

  10. 某厂面试:如何优雅使用 SPI 机制

    代码不多,文章可能有点长.朋友面试某厂问到的 SPI 机制,联想到自己项目最近写到的 SPI 场景,文章简要描述下 SPI 机制的发展历程 产出背景 因为最近项目中使用分库分表以及数据加密使用到了 S ...