hashlib加密模块
# 1.加密就是把明文数据变为密文 # 2.加密的目的是为了保证数据的安全 # 3.加密后的数据是一串没有规律的字符串 # 4.加密后的密文越长说明使用的加密算法(数据的处理过程)越复杂 # 5.常见的加密算法有md5,base64,hmac,sha系列 # 6.加密算法的操作:
import hashlib # 1.选择加密算法 mb5 = hashlib.md5() # 2.传入明文数据 md5.update(b'12345') # b 前缀代表的就是bytes python2.x里, b前缀没什么具体意义, 只是为了兼容python3.x的这种写法 # 3.获取加密密文 res = md5.hexdigest() print(res) # 827ccb0eea8a706c4c34a16891f84e7b
加密算法的补充: # 1.加密算法不变,如果内容相同,加密后的结果也一定相同。 方式1:一次加密所有,把所有传进去 md5.update(b'hello~world~python~666') 方式2:分多次传入加密 md5.update(b'hello') md5.update(b'~world') md5.update(b'~python~666') 两种方式所得的结果是一样的 # 2.加密后的密文是不能进行反解密的 # 3.加盐处理: 在明文里面添加一些额外的干扰项 # 1.选择加密算法 md5 = hashlib.md5() # 2.传入明文数据 md5.update('公司设置的干扰项'.encode('utf8')) md5.update(b'hello python') # 3.获取加密密文 res = md5.hexdigest() print(res) # 4.动态加盐: 干扰项是随机变化的 当前的时间,用户名部分都可作为干扰项 # 5.加密实战操作 1.用户密码加密 2.文件安全性校验 3.文件内容一致性校验 4.大文件内容加密 : 对截取的部分内容进行加密即可
subprocess模块
# 模拟操作系统终端,执行命令并获取结果 import subprocess res = subprocess.Popen( 'pip', # 操作系统执行的命令 shell = True, # 固定配置 stdin = subprocess.PIPE, # 输入命令 stdout = subprocess.PIPE, # 输出结果 ) # print('正确结果',res.stdout.read().decode('gbk')) # 获取操作系统执行命令之后的正确结果 # print('错误结果',res.stderr) # 获取操作系统执行命令之后的错误结果
logging日志模块
1.日志就是记录用户等行为举止的操作 2.日志有五种级别 logging.debug('debug等级') # 10 logging.info('info等级') # 20 logging.warning('warning等级') # 默认从warning级别开始记录日志 30 logging.error('error等级') # 40 logging.critical('critical等级') # 503.日志的代码及基本使用(无需掌握,cv并会修改即可) import logging file_handler = logging.FileHandler(filename='l1.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('你好!!!')
4.日志的组成 1).产生日志 2).过滤日志 3).输出日志 4).日志格式 import logging # 1.日志的产生(准备原材料) logger对象 logger = logging.getLogger('购物车记录') # 2.日志的过滤(剔除不良品) filter对象:可以忽略,不用使用 # 3.日志的产出(成品) handler对象 handler1 = logging.FileHandler('a1.log', encoding='utf-8') # 输出到文件中 handler2 = logging.FileHandler('a2.log', encoding='utf-8') # 输出到文件中 handler3 = 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(handler1) logger.addHandler(handler2) logger.addHandler(handler3) # 6.handler绑定formmate对象 handler1.setFormatter(fm1) handler2.setFormatter(fm2) handler3.setFormatter(fm1) # 7.设置日志等级 logger.setLevel(10) # 8.记录日志 logger.debug('好好写')
5.日志配置字典 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('jason注册成功') logger1 = logging.getLogger('红浪漫顾客消费记录') logger1.debug('慢男 猛男 骚男')
标签:-%,hashlib,加密,subprocess,logging,日志,logger,md5 From: https://www.cnblogs.com/juzijunjun/p/16837409.html