• Python数据库 5.json,hashlib,base64模块


    5.1 json

    JS对象

    var teacher_1 = {
      name: ‘juhao’,
      age: 18,
    feature : [‘高’, ‘富’, ‘帅’]
    }

    JSON字符串

    {
      “name”: “juhao”,
      “age”: 18,
    “ feature “ : [‘高’, ‘富’, ‘帅’]

    }

    Python字典

    {
      ‘name’: ‘juhao’,
      ‘age’: 18
    ‘feature’ : [‘高’, ‘富’, ‘帅’]

    }

    注意

    1.字符串必须用双引号(即:””)来包括

    2.值可以是字符串、数字、true、false、null、列表,或字典。
    • 1.将python数据转化为json:

      json.dumps(obj) Indent实现缩进(一般是4), json.dumps(obj,indent = 4) ensure_ascii 是否用ascii解析 ensure_ascii = False

    • 2.将json数据转换为python的数据:

      2.json.loads(s)

    • 3.转换为json并保存到文件中

      3.json.dump(obj, fp)

    • 4.从文件中读取json,并转化为python数据

      4.json.load(fp)


    with open ('json_test','w+')as f:
    json.dump(obj,indent = 4,ensure_ascii = False,fp=f)
    with open ('json_test','r+')as f:
    res = json.load(fp=f)
    print res

    5.2 hashlib,base64模块

    1.hashlib (MD5)

    hash算法就是-种将任意长度的数据变成一个长度固定的数据的函数

    • 1.对称加密:

      数据加密解密使用相同的密钥

    • 2.非对称加密:

      加密和解密用两把不同的密钥, 公钥用于加密数据,私钥用于解密数据

    • 3.单向加密:

      只能加密数据,而不能解密数据

    2.Hash结构:

    不可逆:无法根据散列值来还原原来的数据

    定长输出:无论输入的原始数据有多长,结果长度是相同的

    抗修改性:输入的微小改变,哪怕只有一个字符,会引起结果的巨大改变

    强碰撞性:很难找到两段内容不同的数据,使他们产生的hash值一致,几乎不可能
    Hashlib模块提供了许多hash算法,主要有:
    1.md5
    2.SHA系列:sha1, sha224, sha256, sha384, sha512
    api 描述:
    hashlib.new(name, data=b”)  生成一个hash对象
    hashlib.hash算法名(data=b”) 生成一个使用该算法的hash对象
    Hash对象.update(arg=None) 更新hash对象
    Hash对象.digest() 返回Hash算法计算得到的值(bytes类型)

    Hash对象.hexdigest() 返回Hash算法计算得到的值(str类型)

    import hashlib

    result = hashlib.new('md5','南北'.encode())

    result = hashlib.md5('南北'.encode())

    print(result.digest())
    print(result.hexdigest())

    result = hashlib.md5()
    result.update('南北'.encode())

    print(result.digest())
    print(result.hexdigest())

    3.base64

    base64是一种用64个字符来表示任意二 进制数据的方法, (将二 进制数据编码成ASCII字符)使用了A-Z,a-z,0-9,+ ,/这64个字符

    特点:
    用来将非ASCII字符的数据转换成ASCII字符的一种方法

    常用于对URL的编码

    可以将不可打印的二进制数据转化为可打印的字符串

     

    api 描述:
    base64.b64encode(s) 对二进制数据进行base64编码
    base64.b64decode(s) 对通过base64编码的数据进行解码

    base64.urlsafe_b64encode(s) 对URL进行base64编码
    base64.urlsafe_b64decode(s) 解码

    import base64

    data = '爱我'
    res = base64.b64encode(data.encode)




    import json
    import base64

    data={
       'name':'nanbei',
       'age':10,
       'feature':["gao","fu","shuai"]
    }

    with open('my_json,txt','w')as f:
       json.dump(data,f,ensure_ascii=False)

    with open('my_json,txt','r')as f:
       result=json.load(f)
       print(type(result))
       print(result['feature'][2])

    with open('my_json,txt','rb')as f:
       result=base64.b64encode(f.read())

    with open('my_json,txt','wb')as f:
       f.write(result)

    with open('my_json,txt','rb')as f:
       print(base64.b64decode(f.read()).decode())

     

  • 相关阅读:
    Linux命令选项及参数解析 getopt() getopt_long() 函数
    找不到文件或程序集名称“DreamweaverCtrls”的解决方法
    #include file 与#include virtual的区别
    用dw(dreamweaver)开发asp.net,连接数据库时出现“http错误500,服务器内部错误”的解决方法
    [ASP.Net]ASP.NET中上传文件
    [.net]"Request.Form出现乱码"的解决方法
    正式进驻博客园
    [ASP.NET] 限制上传文件类型的两种方法(转)
    错误类型:“系统找不到 Microsoft.Office.Interop.Word"
    从客户端检测到有潜在危险的Request.Form 值
  • 原文地址:https://www.cnblogs.com/dyf25288-/p/11701596.html
Copyright © 2020-2023  润新知