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

需求:
深度学习基于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库。

posted @ 2024-02-23 19:43  雪夜羽  阅读(259)  评论(0编辑  收藏  举报