zoukankan      html  css  js  c++  java
  • hashlib,suprocess,configparser模块


    十 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'))

  • 相关阅读:
    Golang Failpoint 的设计与实现
    没涉及到最值求解;观点:矩阵乘法无法表达出结果。 现实生活中事件、现象的数学表达
    多元微分学 枚举破解15位路由器密码 存储空间限制 拆分减长,求最值 数据去重
    ARP Poisoning Attack and Mitigation Techniques ARP欺骗 中间人攻击 Man-In-The-Middle (MITM) attack 嗅探 防范 Can one MAC address have two different IP addresses within the network?
    The C10K problem
    HTTP Streaming Architecture HLS 直播点播 HTTP流架构
    现代IM系统中消息推送和存储架构的实现
    现代IM系统中的消息系统架构
    长连接锁服务优化实践 C10K问题 nodejs的内部构造 limits.conf文件修改 sysctl.conf文件修改
    doubleclick cookie、动态脚本、用户画像、用户行为分析和海量数据存取 推荐词 京东 电商 信息上传 黑洞 https://blackhole.m.jd.com/getinfo
  • 原文地址:https://www.cnblogs.com/zhaodafa/p/8778830.html
Copyright © 2011-2022 走看看