zoukankan      html  css  js  c++  java
  • python笔记-json-base64-hashlib

    一、json

    1.1 Json介绍

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。人类很容易读写。机器很容易解析和生成。它基于 JavaScript编程语言的一部分, 标准ECMA-262第3版 - 1999年12月。JSON是一种完全独立于语言的文本格式,但使用C语言系列程序员熟悉的约定,包括C,C ++,C#,Java,JavaScript,Perl,Python等等。这些属性使JSON成为理想的数据交换语言。

    特点:

    • 轻量级的文本数据交换格式
    • 易于人类阅读和编写,同时也易于机器解析和生成
    • Web世界当中最理想的数据交换格式

    1.2 Json语法

    语法规则

    • 数据由键值对组成
    • 键值对由逗号分隔
    • 大括号里保存对象
    • 中括号里保存数组

    注意

    • 字符串必须用双引号(即:”string”)来包括
    • 值可以是字符串、数字、true、false、null、数组,或对象。

    与python数据类型的对应

    Python JSON
    字典 对象
    列表或元组 数组
    字符串 字符串
    int或float 数字
    True或False true或false
    None null

    1.3 PythonJson数据处理处理

    函数 解释
    json.dump(obj, fp) obj 序列化为 JSON 格式化流形式的 fp
    json.dumps(obj) obj 序列化为 JSON 格式的 str
    json.load(fp) fp (一个支持 .read() 并包含一个 JSON 文档的 text file 或者 binary file) 反序列化为一个 Python 对象。
    json.loads(s) s (一个包含 JSON 文档的 str, bytes 或 bytearray 实例) 反序列化为 Python 对象
    import json
    
    # 将python对象转化为json数据  indent实现缩进,ensure_ascii 是否用ascii解析
    json.dumps(obj)
    # 将python对象转化为json数据并保存到文件
    json.dump(obj, fp)
    
    # 将json字符串转化为python对象
    json.loads(json_str)
    # 读取json文件数据并转化为python对象
    json.load(fp)
    

    二、Base64模块

    2.1 url编码

    ​正常的url中只能包含ASCII字符,也就是说,只能是字母,数字和一些字符,url编码就是为了解决url出现非ASCII字符的问题。

    ​其中base64是一种用64个字符来表示任意二进制数据的方式,(将二进制数据编码成ASCII字符)。

    ​使用了A-Z,a-z,0-9,+,/这64个字符

    特点

    • 用来将非ASCII字符的数据转换成ASCII字符的一种方法
    • 常用于对URL的编码
    • 可以将不可打印的二进制数据转化为可打印的字符串

    2.2 pythonbash64模块

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

    注意

    • Base64编码后的数据可能会含有 + / 两个符号,如果编码后的数据用于URL或文件的系统路径中,
      就可能导致Bug,所以base模块提供了专门编码url的方法

    三、Hashlib

    3.1 加密介绍

    ​数据时代,为了防止数据的泄露保障数据的安全,对数据的加密是是一个必不可少的环节。对于一些用户敏感的隐私数据加密更加的严格。

    ​保护数据最常用的方式就是加密。利用一些加密算法将数据打乱后在通过网络传输,当传输到目的地时,在使用解密算法将数据还原。

    3.2 加密方式

    • 对称加密

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

    • 非对称加密

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

    • 单项加密

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

    3.3 hash结构

    ​散列函数,把任意长的数据,通过散列函数转化为一个固定长度的值,这个值基本是唯一的。

    特点

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

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

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

    • 强碰撞性:很难找到两段内容不同的数据,使他们产生的hash值一致,几乎不可能

    3.4 Python 使用hash加密函数

    Hashlib模块提供了许多供我们调用的hash算法,主要有:

    • md5
    • SHA系列:sha1, sha224, sha256, sha384, sha512
    import hashlib
    # 其他加密算法的使用方法和下面是一致的。
    hash_md5 = hashlib.md5()  # 生成md5对象
    # 加密
    hash_md5.update('string'.encode('utf-8'))   
    # hash_md5 = hashlib.md5('string'.encode('utf-8')) 
    # 获取加密数据
    hash_md5.hexdigest()  # 获取加密后str类型数据
    hash_md5.digest()  # 获取加密后bytes类型数据
    
  • 相关阅读:
    python中的pip
    代码块
    Java 中的main方法
    mysql的decimal(10,0) not null问题
    vue 超大 table
    apache2 的https配置和代理https后端nodejs配置
    3分钟解决MySQL 1032 主从错误(转)
    CentOS 7 Apache服务的安装与配置(转)
    mybatis pagehelper多数据源配置的坑
    web worker的用法及应用场景(转)
  • 原文地址:https://www.cnblogs.com/duyupeng/p/13198775.html
Copyright © 2011-2022 走看看