python序列化--pickle

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值