首页 > 编程语言 >python 加密 变量 (可用于深度学习模型加密)

python 加密 变量 (可用于深度学习模型加密)

时间:2024-02-23 19:56:18浏览次数:39  
标签:加密 变量 python key model pickle 字节

需求:
深度学习基于pytorch,模型需要加密。
查看到网上有使用cryptography加密的方法,如 https://blog.csdn.net/weixin_43508499/article/details/124390983 , 总体思路是调用torch的save函数将模型保存为io.BytesIO ,然后使用cryptography 将 保存为 io.BytesIO 的字节进行加密,解密时先 解密 字节 然后调用torch.load 加载 ,即 io.BytesIO(解密字节) 。

本文提供另一种思路。
使用pickle和cryptography加密model变量,然后读取model变量。
代码为:

import pickle
from cryptography.fernet import Fernet

key = Fernet.generate_key()
f = Fernet(key)
a = pickle.dumps(model)
b = f.encrypt(a)
pickle.dump(b,open("model",'wb'))
c = pickle.load(open("model",'rb'))
d = pickle.loads(Fernet(key).decrypt(c))

流程简述就是:

  1. 生成密钥 Fernet.generate_key() 。
  2. 将model变量转为字节。pickle.dumps。
  3. 加密字节,并保存变量字节变量b ,f.encrypt。
  4. 将字节变量b保存为文件,pickle.dump。
    --加密步骤结束--
    --开始解密步骤--
  5. 读取加密文件,字节变量c,pickle.load。
  6. 解密字节变量c,并将字节转为变量d,pickle.loads。

变量 model 和变量 d 是一样的。

另外也可以搭配使用python的io库。

标签:加密,变量,python,key,model,pickle,字节
From: https://www.cnblogs.com/XUEYEYU/p/18030264

相关文章

  • 盘点一个Python自动化办公Excel数据处理的需求
    大家好,我是Python进阶者。一、前言前几天在Python白银交流群【干锅牛蛙】问了一个Python处理Excel数据的问题。问题如下:有两个问题哈:1、表头有合并单元格识别不出来,如何处理类似下图2、遇到单元格有公式自动识别成了0,如何处理,保留计算后的值,类似下图附上他自己的代码如下:目......
  • 刘铁猛C#学习笔记3 类型、变量、对象、内存
    一、C#中的类型 二、类型所能表示的数的范围其中S开头代表带符号(用一位来存储符号),U开头代表无符号8位=1字节byte 三、程序的静态与动态:静态-尚未运行,在编译器中编译动态-正在运行、调试 程序不运行时在硬盘(外存)里,称作静态的运行时装载到内存里,称作动态的  ......
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的快递包裹检测系统(Python+PySide6界面+训练代码)
    摘要:本文介绍了一种基于深度学习的快递包裹检系统系统的代码,采用最先进的YOLOv8算法并对比YOLOv7、YOLOv6、YOLOv5等算法的结果·,能够准确识别图像、视频、实时视频流以及批量文件中的快递包裹。文章详细解释了YOLOv8算法的原理,并提供了相应的Python实现代码、训练数据集,以及基于P......
  • python基础学习8-网络协议、进程与线程
    UDP协议用户数据包协议socketbind()sendall()recvfrom()sendto()close()TCP服务器端流程:使用socket类创建一个套接字对象使用bind((ip,port))方法绑定ip地址和端口号使用listen()方法开始TCP监听使用accept()方法等待客户端的连接使用recv()/send()方法接受发送......
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的智能监考系统(Python+PySide6界面+训练代码)
    摘要:本文介绍了一种基于深度学习的智能监考系统系统的代码,采用最先进的YOLOv8算法并对比YOLOv7、YOLOv6、YOLOv5等算法的结果·,能够准确检测图像、视频、实时视频流以及批量文件中的目标。文章详细解释了YOLOv8算法的原理,并提供了相应的Python实现代码、训练数据集,以及基于PySide6......
  • grpc python 实践
    目录前言项目结构依赖安装简单Demo接口定义编译proto服务端的实现客户端的实现进阶Demo接口定义服务端的实现客户端的实现使用HTTP作为中介服务端的实现客户端的实现原文链接:1.使用Python实现gRPC通信前言本文主要讲述如何使用Python实现gRPC通信,并通过三个例子,由浅入深地进行......
  • 【Python&GIS】Python线矢量等距离取点/线等分取点&点创建矢量面
    ​        不多说,这是之前项目需求的代码,已经是去年的了一直没来的及发,今天抽出来一丢丢的空挡发一下。主要就是利用线矢量等距离生成点矢量,或者直接将线矢量等分生成点矢量,这个需求其实极限一下就是线转点了(将距离设置小一点)。顺便将点生成矩形面的代码也给出来,这里的......
  • python处理栅格数据
    字节序列:ReadRaster([xoff],[yoff],[xsize],[ysize],[buf_xsize],[buf_ysize],[buf_type],[band_list],[buf_pixel_space],[buf_line_space],[buf_band_space])xoff是列读取起点,默认值为0。yoff是行读取起点,默认值为0。xsize是读取的列数,默认为全部读取。ysize是读取的......
  • python 面向对象(进阶篇)
    上一篇《Python面向对象(初级篇)》文章介绍了面向对象基本知识:面向对象是一种编程方式,此编程方式的实现是基于对类和对象的使用类是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中)对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函......
  • python使用栅格计算器
    重采样是指根据一类象元的信息内插出另一类象元信息的过程。在遥感中,重采样是从高分辨率遥感影像中提取出低分辨率影像的过程。常用的重采样方法有最邻近内插法、双线性内插法和三次卷积法内插。  ReadAsArray函数可以重采样读取的数据,并且指定输出缓冲区大小或传递一个已有......