python-数据传输和加密(json\hashlib\base64)
发布日期:2021-05-10 10:21:34 浏览次数:19 分类:精选文章

本文共 1915 字,大约阅读时间需要 6 分钟。

目录


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 hashlibpassword = '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 hashlibsalt = '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)

加密和编码破解:

参考网站:

上一篇:python-时间模块库
下一篇:python-redis数据库

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年04月27日 20时10分45秒