目录
json
python和json中的数据类型
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)
加密和编码破解:
参考网站:
python官网-hash:https://docs.python.org/zh-cn/3/library/hashlib.html
https://www.liaoxuefeng.com/wiki/1016959663602400/1017686752491744