import hashlib import os import json import pickle from operator import itemgetter b_dict = [{'name': 'lilei', 'score': 150}, {'name': 'haimei', 'score': 140}, {'name': 'kate', 'score': 149}, {'name': 'xiaohong', 'score': 135}] # p_info=bytes(json.dumps(b_dict).encode('utf-8')) # p_info = pickle.dumps(b_dict) # print(p_info) # with open('b_test', 'wb') as wf: # # pickle.dump(len(p_info),wf) # pickle.dump(b_dict,wf) # # pickle.dump(p_info,wf) # with open('b_test', 'rb') as rf: # ploads = pickle.load(rf) # print(ploads) # 安全密钥 SECRET_KEY = b'my-secret-key' # 使用pickle序列化并加密数据 def dump_secure(obj, file_path): with open(file_path, 'wb') as f: # 序列化 pickle_data = pickle.dumps(obj) # 使用密钥和内容生成签名 signature = hashlib.sha256(SECRET_KEY + pickle_data).digest() # 写入签名和序列化数据 f.write(signature) f.write(pickle_data) # 使用pickle解密并验证数据 def load_secure(file_path): with open(file_path, 'rb') as f: # 读取签名和数据 signature = f.read(hashlib.sha256().digest_size) pickle_data = f.read() # 验证签名 if hashlib.sha256(SECRET_KEY + pickle_data).digest() != signature: raise ValueError("Invalid signature or data has been modified") # 反序列化 return pickle.loads(pickle_data) # 示例用法 # data = {'example': 'data'} # dump_secure(b_dict, 'secure_data.pkl') loaded_data = load_secure('secure_data.pkl') print(loaded_data) # loaded_data=sorted(loaded_data,key=lambda r:r.get('score'),reverse=True) loaded_data=sorted(loaded_data,key=itemgetter('score'),reverse=True) print(loaded_data)
python序列化--pickle
最新推荐文章于 2024-10-12 12:26:23 发布