hashlib,suprocess,configparser模块

本文详细介绍了Python中hashlib模块的使用方法及其特点,包括常见哈希算法的应用及安全性考虑;同时深入探讨了configparser模块的功能,如读取、修改配置文件等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


十 hashlib模块

1、什么叫hash:hash是一种算法,该算法接受传入的内容,经过运算得到一串hash值

2、hash值的特点是:
2.1 只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验
2.2 不能由hash值返解成内容=======》把密码做成hash值,不应该在网络传输明文密码
2.3 只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的

import hashlib

m=hashlib.md5()
m.update('hello'.encode('utf-8'))
m.update('world'.encode('utf-8'))
m.update('egon'.encode('utf-8'))
print(m.hexdigest()) #3801fab9b8c8d9fcb481017969843ed5


以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。

import hashlib

hash = hashlib.sha256('898oaFs09f'.encode('utf8'))
hash.update('alvin'.encode('utf8'))
print (hash.hexdigest())#e79e68f070cdedcfe63eaf1a2e92c83b4cfb1b5c6bc452d214c1b7e77cdfd1c7

python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 进行进一步的处理然后再加密:

import hmac
h = hmac.new('alvin'.encode('utf8'))
h.update('hello'.encode('utf8'))
print (h.hexdigest())#320df9832eab4c038b6c1d7ed73a5940


要想保证hmac最终结果一致,必须保证:
1:hmac.new括号内指定的初始key一样
2:无论update多少次,校验的内容累加到一起是一样的内容

二、subprocess模块

import subprocess

dos命令
tasklist | findstr python
taskkill /? #查询用法
D:\code>tasklist | findstr python
python.exe 12360 Console 1 11,024 K

D:\code>taskkill /F /PID 12360

linux系统(了解)
ps aux | grep python
kill -9 PID


在Python中模拟cmd并保存而不输出到屏幕
import os

res=os.system('dixCVr')
print('运行结果:',res)

import subprocess

obj=subprocess.Popen('dir',
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)

res1=obj.stdout.read()
print('正确结果1111: ',res1)

res2=obj.stdout.read()
print('正确结果2222: ',res2) #只能取一次,取走了就没有了

res2=obj.stderr.read()
print('错误结果:',res2.decode('gbk'))

三、configparser模块

配置文件如下:

[section1]
k1 = v1
k2:v2
user=egon
age=18
is_admin=true
salary=31

[section2]
k1 = v1

import configparser

config=configparser.ConfigParser()
config.read('a.cfg')

查看所有的标题
res=config.sections() #['section1', 'section2']
print(res)

查看标题section1下所有key=value的key
options=config.options('section1')
print(options) #['k1', 'k2', 'user', 'age', 'is_admin', 'salary']

查看标题section1下所有key=value的(key,value)格式
item_list=config.items('section1')
print(item_list) #[('k1', 'v1'), ('k2', 'v2'), ('user', 'egon'), ('age', '18'), ('is_admin', 'true'), ('salary', '31')]

查看标题section1下user的值=>字符串格式
val=config.get('section1','user')
print(val) #egon

查看标题section1下age的值=>整数格式
val1=config.getint('section1','age')
print(val1) #18

查看标题section1下is_admin的值=>布尔值格式
val2=config.getboolean('section1','is_admin')
print(val2) #True

查看标题section1下salary的值=>浮点型格式
val3=config.getfloat('section1','salary')
print(val3) #31.0

import configparser

config=configparser.ConfigParser()
config.read('a.cfg',encoding='utf-8')


删除整个标题section2
config.remove_section('section2')

删除标题section1下的某个k1和k2
config.remove_option('section1','k1')
config.remove_option('section1','k2')

判断是否存在某个标题
print(config.has_section('section1'))

判断标题section1下是否有user
print(config.has_option('section1',''))


添加一个标题
config.add_section('egon')

在标题egon下添加name=egon,age=18的配置
config.set('egon','name','egon')
config.set('egon','age',18) #报错,必须是字符串


最后将修改的内容写入文件,完成最终的修改
config.write(open('a.cfg','w'))

转载于:https://www.cnblogs.com/zhaodafa/p/8778830.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值