Python基础 ( 九 ) —— 模块之configparse、hashlib等

#configparse 模块

#用于生成配置文件,以及相关操作

import configparser
config = configparser.ConfigParser()
config['default'] = {}
config['default']['配置一'] = 'a'
config['default']['配置二'] = 'b'
with open('configparser.ini','w',encoding='utf8') as f:
     config.write(f)

#增删改查

import configparser
#写入
config = configparser.ConfigParser()
config['DEFAULT'] = {}
config['DEFAULT']['配置一'] = 'a'
config['DEFAULT']['配置二'] = 'b'
config['user'] = {}
a = config['user']
a['内容一'] = '123123'
with open('configparser.ini','w',encoding='utf8') as f:
     config.write(f)
#读取
config1=configparser.ConfigParser()
config1.read('configparser.ini',encoding='utf8')          #读取文件操作
print(config.sections())                                  #显示块名字,如 [参数] ,若果是[DEFAULT]默认不显示
print(config.items('user'))                               #遍历值
print(config.options('user'))                             #遍历键
#上行代码相当于
for i in config['user']:                                  #遍历键值对
     print(i)                                             #多输出了[DEFAULT]的键(相当于[user]里加了[DEFAULT]的内容),
                                                          # DEFAULT有特殊意义,里面的键值对在其他块中的键值对遍历时也会遍历
#查找
print(config1['user']['内容一'])                          #获取内容
print(config.get('user','内容一'))                        #获取的另一种写法
print('abc' in config)                                    #判断是否有内容
#
config.add_section('新块')                                #新增块
config.set('新块','新键','321321321')                     #加值
#删,改
config.remove_option('DEFAULT','配置一')                  #删块下键值对
config.remove_section('新块')                             #删块
config['DEFAULT']['配置二'] = '66666'                     #修改值
#修改后写入
config.write(open('configparser_new.ini','w',encoding='utf8'))

#hashlib模块

#hash算法 (摘要算法),例如 MD5算法,他能将明文变密文,但是无法恢复成明文 (固定长度)

#加密算法指 明文变密文,同时密文还能解密成明文

import hashlib

obj=hashlib.md5()                             #规定使用md5算法
obj.update('hello'.encode('utf8'))            #将hello 转为bytes 然后用MD5加密 ,得出的密文唯一且不能反解
                                              #但是通过这种加密,全世界只要加密hello都能得到一样的密文,
                                              #所以会被撞库破解(在一个很庞大的数据库中记录者明文一一对应密文的数据)
print(obj.hexdigest())                        #进行md5算法 5d41402abc4b2a76b9719d911017c592
#为了防止撞库,在MD5算法中加入了自己独一无二的东西
obj1=hashlib.md5('unique'.encode('utf8'))     #MD5算法中加入自己设定的 unique 参数,这样全世界只有你一个人知道加密完是什么样子
obj1.update('hello'.encode('utf8'))
print(obj1.hexdigest())                       #91bfbc9209636a67e30f1de3f5044b9c

#连续两次对obj赋值,相当于把两个赋值内容连在一起加密
obj2=hashlib.md5()
obj2.update('123'.encode('utf8'))
obj2.update('456'.encode('utf8'))
print(obj2.hexdigest())                        #e10adc3949ba59abbe56e057f20f883e

obj3=hashlib.md5()
obj3.update('123456'.encode('utf8'))
print(obj3.hexdigest())                        #e10adc3949ba59abbe56e057f20f883e 与上面相同

 

#其他算法如 sha256、sha384、sha512(复杂度依次升高) 用法和上面完全相同,即只要把MD5替换成相应算法就行

 

posted @ 2019-03-26 20:28  Matrixssy  阅读(223)  评论(0)    收藏  举报