【发布时间】:2019-11-25 03:35:47
【问题描述】:
背景:
嗨。我目前正在做一个项目,该项目主要依靠 Pickles 来保存我拥有的对象的状态。这是我编写的两个函数的代码 sn-p:
from Kiosk import * #The main class used for the lockers
import gc #Garbage Collector library. Used to get all instances of a class
import pickle #Library used to store variables in files.
def storeData(Lockers:Locker):
with open('lockerData', 'wb') as File:
pickle.dump(Lockers, File)
def readData():
with open('lockerData', 'rb') as File:
return pickle.load(File)
这个 pickle 数据最终将使用 Sockets 库从服务器发送和接收。
我已经阅读了一些有关 Pickles 的主题,似乎每个人都同意在某些用例中使用 pickle 可能非常危险,因为让它们执行不需要的代码相对容易。
目标:
出于上述原因,我想在 AES 将我的 pickle 数据写入 Pickle 文件之前对其进行加密,这样即使从服务器发送和接收,pickle 文件也始终是加密的。我现在的主要问题是,如果不先将 pickle 数据写入 Pickle 文件,我不知道如何获取它。 pickle.dump() 只允许我将泡菜数据写入文件,但不允许我立即获取此泡菜数据。
如果我决定在泡菜数据已写入文件后进行加密,这意味着泡菜数据将在一段时间内以纯文本形式存储,我不希望这种情况发生.
伪代码:
这是我期望的任务执行流程:
PickleData = createPicle(Lockers)
PickleDataE = encrypt(PickleData)
with open('textfile.txt', 'wb') as File:
File.write(PickleDataE)
问题:
所以我的问题是,如何在不将泡菜数据写入文件的情况下获取泡菜数据?
【问题讨论】:
-
签出pickle.dumps 以写入字节对象而不是文件