hashlib模块,configparse模块,logging模块

#################hashlib加密模块############################

#登陆 md5 sha       #密码不能用使用文字存储       #密文存储 摘要算法 #校验文件的一致性,  md5       #网络的上传下载功能       #保证多台服务器状态
#摘要算法:
import hashlib
#
has = hashlib.md5()
has.update(b‘xx169..‘)# 使用md5摘要算法对‘alex3714‘进行摘要
ret = has.hexdigest()   #获取摘要之后的结果
print(ret)  #538fced34767a51934e1ebdc2e841da4
#
user = input(‘user:‘)
passwd = input(‘passwd:‘)
md5 = hashlib.md5()
md5.update(passwd.encode(‘utf-8‘))
passwd = md5.hexdigest()
if user ==‘alex‘ and passwd == ‘538fced34767a51934e1ebdc2e841da4‘:
    print(‘登陆成功‘)

else:
    print(‘密码错误‘)

md51 = hashlib.sha1()
    #sha算法
md51.update(b‘alex114‘) #使用sha1 摘要算法对‘alex114‘进行摘要
ret = md51.hexdigest()  #获取摘要到的结果
print(ret)  #结果==837db908c104b4818ef0289cdf049adeb5b85673
md5_obj = hashlib.md5()
md5_obj.update(b‘aaabbb‘)
res = md5_obj.hexdigest()
print(res)  #6547436690a26a399603a7096e876a2d

md5_obj = hashlib.md5()
md5_obj.update(b‘aa‘)
md5_obj.update(b‘abbb‘)
res = md5_obj.hexdigest()
print(res)  #6547436690a26a399603a7096e876a2d
相同的字符串使用相同的选法 在任何时候 得到的结果都是一致的   只要在res = md5_obj.hexdigest()这个之前的摘要出来的值都是一样
#加盐算法
# mdl = hashlib.md5(‘xx169..‘.encode(‘utf-8‘)+‘xx169..‘.encode(‘utf-8‘))
# mdl.update(b‘xzx199669..‘) #给这个字符串密码摘要出来的加上‘盐‘的
# res = mdl.hexdigest()
# print(res)     #加盐后 == 9db2029ebe5d89a2948232db4760f917
# #加盐进阶  409c14adcdd9e6ca7344d4b3b6f9b1b2
user = input(‘user:‘)
passwd = input(‘passwd:‘)
md2 = hashlib.md5(passwd.encode(‘utf-8‘)+passwd.encode(‘utf-8‘))  #动态双重加盐
md2.update(b‘xzx16..‘)
passwd = md2.hexdigest()
if user == ‘alex‘ and passwd ==‘6e0ba85efb3a9ecce7398136471ed425‘:
    print(‘ok‘)
else:
    print(‘no‘)
import hashlib
md5_obj = hashlib.md5()
# md5算法的对象
md5_obj.update(b‘xz69..‘)  # 使用md5摘要算法对‘alex3714‘进行摘要
res = md5_obj.hexdigest()   # 获取摘要之后的结果
print(res,type(res))  #538fced34767a51934e1ebdc2e841da4  32位
#校验文件的一致性
with open(‘sha1.log‘,‘rb‘)as f:
    md2 = hashlib.md5(‘sex‘.encode(‘utf-8‘))  #文化也可以实行加盐
    md2.update(f.read())
    r1 = md2.hexdigest()
    print(r1)  #sha1.log的摘要是==9b517904a0281546ef51a0205e949358 and 加盐==cac879244551bc96359e002a8f967a22
# #校验文件放法2
#
with open(‘sha1.log‘,‘rb‘)as f:
    md2 =hashlib.md5(‘sex‘.encode(‘utf-8‘))  #文件加盐后
    for line in f:
        md2.update(line)  ## update操作可以在hexdigest之前执行多次
                          #分次对一个长字符串进行摘要
    r2 = md2.hexdigest()
    print(r2) #cac879244551bc96359e002a8f967a22
#hashlib.sh1()的摘要
ha = hashlib.sha1()
ha.update(b‘xzx1966‘)
ret1 = ha.hexdigest()
print(ret1)

#################configparser。init类文件操作#################

####################configparser。init类文件操作################################################configparser。init类文件操作############################
#可以当作一个字典的方式来操作

#######写入#######
import configparser
config =configparser.ConfigParser() #config 创建这个对象用来操作文件

#给config 这个对象写入组  和成员
config[‘DEFAULT‘] ={‘server‘:‘45‘,‘Compression‘:‘yes‘,‘Comperssionlevel‘:‘9‘,‘Forwardell‘:‘ok‘}
config[‘bitbucket.org‘] ={‘user‘:‘hg‘}
config[‘Topsecret.server.com‘] = {‘host‘:‘25000‘,‘Forwardell‘:‘no‘}

with open(‘example.ini‘, ‘w‘) as configfile:  #打开example.ini这个文件后w写入
   config.write(configfile)     #给config 这个对象把 configfile文件句柄传入禁区
##############

########读取文件内容#########
import configparser
configr= configparser.ConfigParser

config.read(‘example.ini‘)
print(config.sections())  #查看config这个组中的成员信息  但是看不到DEFAULT里面的需要另一个办法

print(‘Topsecret.server.com‘ in config) #判断一个祖名是否在config这个对象的大组里面,返回True, False
print(config[‘DEFAULT‘][‘server‘])  #取DEFAULT这个关键字组中成员对于的值 相当于字典的value
print(config[‘Topsecret.server.com‘][‘host‘])  #查看祖名,组成员的对于值

# print(config[‘bitbucket.org‘])  #输出结果==<Section: bitbucket.org>  查看一个组他是一个可迭代的组 所以得for一下

for i in config[‘bitbucket.org‘]:  #循环 config这个对象中[‘bitbucket.org‘] 这个组是个可迭代的 返回了成员等号左边的key
    print(i)

# print(config.options(‘Topsecret.server.com‘))
# print(config.items(‘Topsecret.server.com‘))  #返回一个列表套元祖的 字典键值对
print(config.get(‘Topsecret.server.com‘,‘host‘))  #get 方法去 一个组名中取组成员key的值

###增删改查########
import configparser  #导入模块
confi = configparser.ConfigParser()   #写入模块规范

confi.read(‘example.ini‘)    #读取example。ini这个文件
confi.add_section(‘yuan‘)     #给config这个大字典加入一个"yuan"组
confi.remove_option(‘bitbucket.org‘)
confi.remove_option(‘Topsecret.server.com‘,‘forwardell‘)

 

#################loging日志模#####################

      用于便捷记录日志且线程安全的模块

日志等级:

CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0只有【当前写等级】大于【日志等级】时,日志文件才被记录。
# 定义文件
file_1_1 = logging.FileHandler(‘l1_1.log‘, ‘a‘, encoding=‘utf-8‘)
fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s")
file_1_1.setFormatter(fmt)

file_1_2 = logging.FileHandler(‘l1_2.log‘, ‘a‘, encoding=‘utf-8‘)
fmt = logging.Formatter()
file_1_2.setFormatter(fmt)

# 定义日志
logger1 = logging.Logger(‘s1‘, level=logging.ERROR)
logger1.addHandler(file_1_1)
logger1.addHandler(file_1_2)

# 写日志
logger1.critical(‘1111‘)
# 定义文件
file_2_1 = logging.FileHandler(‘l2_1.log‘, ‘a‘)
fmt = logging.Formatter()
file_2_1.setFormatter(fmt)

# 定义日志
logger2 = logging.Logger(‘s2‘, level=logging.INFO)
logger2.addHandler(file_2_1)
  • 当使用【logger1】写日志时,会将相应的内容写入 l1_1.log 和 l1_2.log 文件中
  • 当使用【logger2】写日志时,会将相应的内容写入 l2_1.log 文件中

操作longing日志列子:

#logging记录代码日志模块

logging库提供了多个组件:Logger、Handler、Filter、Formatter。Logger对象提供应用程序可直接使用的接口,Handler发送日志到适当的目的地,Filter提供了过滤日志信息的方法,Formatter指定日志显示格式。另外,可以通过:logger.setLevel(logging.Debug)设置级别,当然,也可以通过fh.setLevel(logging.Debug)单对文件流设置某个级别



import logging
#
logger = logging.getLogger()

                         #当前时间   #当前模块名   #当等级          当前信息
fm = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘)

#创建一个文件句柄 控制向那个文件中输出,用什么格式,以及等级
fh = logging.FileHandler(‘sha1.log‘,encoding=‘utf-8‘)
fh.setFormatter(fm)

#创建一个屏幕句柄 控制向屏幕输出 用什么格式 等级
sh = logging.StreamHandler()  #向屏幕输出
sh.setFormatter(fm) #让屏幕输出和文件输出放在一起

#将logger对象文件句柄和屏幕句柄绑定在一起
logger.addHandler(fh)
logger.addHandler(sh)

logger.setLevel(logging.INFO)   #只输出info以上加info4个信息 debug不显示
logger.debug(‘1 logger debug message‘)  #调试自用
logger.info(‘2 logger info message‘)    #信息
logger.warning(‘3 logger warning nessage‘)  #警告
logger.error(‘4 logger error message‘)      #错误
logger.critical(‘5 logger critical message‘) #严重错误

原文地址:https://www.cnblogs.com/jsp0/p/8571073.html

时间: 2024-10-11 11:27:05

hashlib模块,configparse模块,logging模块的相关文章

模块---hashlib、configparse、logging

一.hashlib模块 hashlib模块介绍:hashlib这个模块提供了摘要算法,例如 MD5.hsa1 摘要算法又称为哈希算法,它是通过一个函数,把任意长度的数据转换为一个长度固定的数据串,这个数据串使用的十六进制表示.摘要算法是一个单向函数,计算容易,如果想要反推摘要算法那是非常喜困难的,而且 如果对原数据做了一个bit的修改,都会导致计算出的摘要完全不同,我们经常使用摘要对比数据是否被修改过和密码的加密. MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一

模块和包,logging模块

模块和包,logging日志 1.模块和包 什么是包? 只要文件夹下含有__init__.py文件就是一个包. 假设文件夹下有如下结构 bake ├── test.py ├── __init__.py ├── api ├── __init__.py ├── policy.py └── versions.py ├── cmd ├── __init__.py └── manage.py └── db ├── __init__.py └── models.py 在test.py进行导入policy.p

第三十六篇 hashlib模块、hmac模块和logging模块

目录 第三十七篇 hashlib模块.hmac模块和logging模块 一.hashlib模块 1.hash是什么 2.撞库破解hash算法加密 二.hmac模块 三.logging模块 1.日志的五个级别 2.V3 3.日志配置文件 4.总结 第三十七篇 hashlib模块.hmac模块和logging模块 一.hashlib模块 1.hash是什么 1.hashlib模块一般用于明文加密 2.hash是一种算法,在hashlib模块中主要提供了md5 等算法,传入的内容通过这些算法,会得到一

7、模块之三 logging模块

1.logging模块 # python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 # debug(), info(), warning(), error() and critical() 5个级别 # Level When it’s used # DEBUG Detailed information, typically of interest only when diagnosing problems. # INFO Confirm

Python基础第十三天——sys模块、logging模块、json模块、pickle模块

一.sys模块 1.定义: 与python解释器交互的一个模块 2.sys模块常用的方法 (1)sys.argv方法 定义:命令行参数list,第一个元素是程序本身路径 例: import sys print(sys.argv) # sys.argv只是反映当前模块名,用一个列表存着 # 而pycharm软件则给我们自动加上了绝对路径 输出结果:          # 这个结果并不正确,是因为这是pycharm给加上去的 ['C:/Users/William/PycharmProjects/Py

logging模块的使用心得

目录 logging 模块 为什么要使用 logging 模块 如何使用 logging 模块 如何利用 logging 模块写日志文件 利用 logger 对象 利用基本配置 logging 模块 logging 模块是 Python 内置的标准模块, 主要用于输出运行日志 logging 可以设置信息输出位置, 以及如何输出 1. 可以设置输出日志的等级, 保存路径, 日志文件回滚等 2. 可以通过设置不同的日志等级, 在 release 版本中只输出重要信息,而不必显示大量的调试信息 为什

Python之常用模块(六)re模块与logging模块和包

5.10 re模块 re(正则)简介:正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. re元字符 元字符 匹配内容 \w 匹配字母(包含中文)或数字或下划线 \W 匹配非字母(包含中文)或数字或下划线 \s 匹配任意的空白符 \S 匹配任意非空白符 \d 匹配数字 \D 匹配非数字 \A 从字符串开头匹配 \n 匹配一个换行符 \t 匹配一个制表符 ^ 匹配字符串的开始 $ 匹配字符串的结尾 . 匹配任意字符,除了

python模块: hashlib模块, configparse模块, logging模块

一. hashlib模块 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示). 摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡改过.摘要算法之所以能指出数据是否被篡改过,就是因为摘要函数是一个单向函数,计算f(data)很容易,但通过digest反推data却非常困难.而且,对原

8.模块介绍 time &amp;datetime模块 random os sys shutil json &amp; picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式

本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.p

hashlib,configparser,logging模块

一.常用模块二 hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示). 注意:摘要算法不是一个解密算法.(摘要算法,检测一个字符串是否发生了变化) 应涂:1.做文件校验 2.登录密码 密码不能解密,但可以撞库,用'加盐'的方法就可以解决撞库的问题.所有以后设置密码的时候要设置的复杂一点. 1 import hashlib 2