zoukankan      html  css  js  c++  java
  • 模块(2)

    一、jason&pickle模块

    什么是序列化?

    指的是把内存数据类型转换成一种特定格式的内容

    该格式内容可用于存储或传输给其他平台使用

    为何要序列化?

    1、可用于存储,用于存档

    2、传输给其他平台使用,跨平台数据交互

    如果我们要在不同的编程语言之间使递传象,就必须把对象序列化 标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存领教到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在WEB页面中读取,非常方便。

    内存中结构化的数据<-->格式json<-->字符串<-->保存到文件中或基于网络传输

    import json
    #序列化
    json_res = json.dumps([1,"aaa",True,False])
    print(json_res)
    
    #反序列化
    L = json.loads(json_res)
    print(L,type(L))
    

     

    import json
    
    #序列化的结果写入文件的简单方法
    with open("tst.json","wt",encoding="utf-8") as f:
        json.dump([1,"aaa",True,False],f)
    
    
    #从文件读取json格式的字符串进行反序列化操作的简单方法
    with open("test.json","rt",encoding="utf-8") as f:
        l = json.load(f)
        print(l,type(l))
    

    json验证:json格式兼容的是所有语言通用的数据类型,不能识别某一语言所独有的

    如python的集合

    强调:不要与Python混淆

    json里用" " 引号,python里可以使用‘ ’ 单引

    猴子补丁
    
    在入口处打猴子补丁
    
    import json
    
    import ujson
    
    def monkey_patch_json():
    
      json.__name__='ujson"
    
      json.dumps = ujson.dumps
    
      json.loads= ujson.loads
    
    monkey_patch_json()
    

      

    二、configparser模块


    import configparser

    config = configparser.ConfigParser()
    config.read("test.ini")

    #获取sections
    #print(config.sections())

    #获取某一section下的所有options
    #print(config.options("section"))

    #获取items
    #print(config.items("section"))

    #获取指定的
    #print(config.get("section","user"))

    # res = config.getint("section","age")
    # print(res)




     三、hashlib模块

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

     2、特点:

      只要传入的内容一样,得到的hash值必然一样,要用明文传输密码文件完整性校验 

      不能由hash值返解成内容,把密码做成hash值,不应该在网络传输明文密码

      只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的

      hash算法就像一座工厂,工厂接收你送来的原材料(可以用m.update()为工厂运送原材料),经过加工返回的产品就是hash值

      

    import hashlib
    
    m = hashlib.md5()
    m.update("hello".encode("utf-8"))
    print(m.hexdigest())
    
    m.update("alvin'.encode("utf8"))
    print(m.hexdigest())
    
    m2=hashlib.md5()
    m2.update("helloalvin".encode("utf8"))
    print(m2.hexdigest())
    

      

    以上加密算法虽然依然非常历害,但时候存在缺陷,即:通过撞库存可以反解。所以,有必要对加密算法中添加自定义key再来做加密。
    
    import hashlib
    hash = hashlib.sha256("898paFs09f".encode("urt8"))
    hash.update("alvin".encode("utf8"))
    print(hash.hexdigest())
    

      

    import hnac
    h = hmac.new("alvin".encode("utf8"))
    h.update("hello".encode("utf8"))
    print(h.hexdigest())
    

      

  • 相关阅读:
    数学归纳法证明等值多项式
    整值多项式
    同余式
    欧拉定理&费马定理
    与模互质的剩余组
    欧拉函数的性质
    欧拉函数计数定理
    完全剩余组高阶定理
    51nod 1488 帕斯卡小三角 斜率优化
    51nod 1577 异或凑数 线性基的妙用
  • 原文地址:https://www.cnblogs.com/acnjanna2019/p/12608511.html
Copyright © 2011-2022 走看看