python-数据传输和加密(json\hashlib\base64)

json

Json(JavaScript Object Notation)是JavaScript对象表示法,是一种轻量级的文本数据交换格式,数据由键值对的形式组成,和python中字典一样,数据写在大括号中,每组键值对之间用逗号隔开,数组数据写在中括号中,字符串数据必须使用双引号,不能使用单引号。一个json对象为一个整体的字符型存在。

python和json中的数据类型

Python

Json

字典

对象

列表/元组

数组

字符串

字符串

int/float

数字

True/False(首字母大写)

true/false(首字母小写)

None

null

 python数据与json数据的转换(序列化与反序列化)

序列化

python数据转化为json:json.dumps(odj)

python数据转化为json并保存到文件中:Json.dump(obj,fine)  

反序列化

json转化为python:json.loads(obj)

读取文件中的json并转化为python数据:json.load(fine)

序列化中常用参数:ensure_ascii=False:用于 ASCII解析,默认为True ;    indent=4 :格式化缩进显示及缩进的长度

数据加密

对称加密:数据加密和解密使用同一密钥

非对称加密:加解密使用不同的密钥,公钥加密,私钥解密

单向加密:只能对数据加密,不能解密

hashlib

Hash加密:将数据加密成长度固定的散列值。hash的特点:不可逆性,定长输出,抗修改性,强碰撞性。

hashlib中的常用加密算法:MD5和sha系列:sha后的数值越大,加密出的hash值的长度越大。

对数据加密前需要先encode编码,编码后为一个hash类对象,需要得到值时需要使用方法:hash对象名.digest()  或  hash对象名.hexdigest()

加密方法

import hashlib

password = 'qwe123'.encode()

ha1 = hashlib.new('md5',password)  # 使用new创建对象
ha2 = hashlib.md5(password)  # 直接使用加密方法创建对象

# 加密生成一个加密对象,要获取这个对象的值,需要使用下面的方法
ha1a = ha1.hexdigest()
ha2a = ha2.hexdigest()
ha1b = ha1.digest()
ha2b = ha2.digest()
print('返回str类型:%s'%ha1a,'\t返回bytes类型:%s'%ha1b)
print('返回str类型:%s'%ha2a,'\t返回bytes类型:%s'%ha2b)

安全加密

使用加盐、更新等方法

import hashlib

salt = 'username'.encode()
password = '123456'.encode()

# 通过加盐使密码更安全
hashpd = hashlib.sha512(password+salt)
print(hashpd.hexdigest())

# 使用update更新加密,参数为更新加密的数据
hashpd.update('更新加密'.encode('utf-8'))  
print(hashpd.hexdigest())

# pbkdf2_hmac方法产生密钥派生对象
hashpd1 = hashlib.pbkdf2_hmac('sha256',password,salt,100000)
print(hashpd1)  # 直接打印的对象为编码格式的bytes类型值
print(hashpd1.hex())  # 通过对象的hex()方法得到str类型的值

base64

uil编码:将url中可能出现的特殊字符用ascii中A-Z,a-z,0-9,+,/ 这64个字符进行二进制编码,将非ascii字符的数据转换为ascii字符,将不可打印的二进制数据转化为可打印的字符串。bash64中提供了专门对URL进行编码的编码的方法以防止其他编码方式在对+或/编解码时的错误导致出现bug。

对二进制数据进行base64编码:base64.b64encode(bs)

对通过base64编码的数据进行解码:base64.b64decode(bs)

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

对通过base64编码的URL解码:base64.urlsafe_b64decode(s)

加密和编码破解:

hash破解https://www.cmd5.com/

数据转化工具https://tool.oschina.net/

参考网站:

python官网-hashhttps://docs.python.org/zh-cn/3/library/hashlib.html

https://www.liaoxuefeng.com/wiki/1016959663602400/1017686752491744

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页