hashlib模块,configparse模块,logging模块

Posted 胸不平$怎平天下

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hashlib模块,configparse模块,logging模块相关的知识,希望对你有一定的参考价值。

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


#登陆 md5 sha

  #密码不能用使用文字存储
  #密文存储 摘要算法
#校验文件的一致性, md5
  #网络的上传下载功能
  #保证多台服务器状态
#摘要算法:
import hashlib
#
has = hashlib.md5()
has.update(bxx169..)# 使用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(balex114) #使用sha1 摘要算法对‘alex114‘进行摘要
ret = md51.hexdigest()  #获取摘要到的结果
print(ret)  #结果==837db908c104b4818ef0289cdf049adeb5b85673
md5_obj = hashlib.md5()
md5_obj.update(baaabbb)
res = md5_obj.hexdigest()
print(res)  #6547436690a26a399603a7096e876a2d

md5_obj = hashlib.md5()
md5_obj.update(baa)
md5_obj.update(babbb)
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(bxzx16..)
passwd = md2.hexdigest()
if user == alex and passwd ==6e0ba85efb3a9ecce7398136471ed425:
    print(ok)
else:
    print(no)

 

import hashlib
md5_obj = hashlib.md5()
# md5算法的对象
md5_obj.update(bxz69..)  # 使用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(bxzx1966)
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) #严重错误

 

以上是关于hashlib模块,configparse模块,logging模块的主要内容,如果未能解决你的问题,请参考以下文章

hashlib模块,configparse模块,logging模块

hashlib,configparser,logging模块

Python基础-configparser和hashlib模块

picklejson,configparser,hashlib模块

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

configparser ,shelve ,hashlib,random模块