【问题标题】:Reading python pickle data before writing it to a file在将其写入文件之前读取 python pickle 数据
【发布时间】: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) 

问题:

所以我的问题是,如何在不将泡菜数据写入文件的情况下获取泡菜数据?

【问题讨论】:

标签: python sockets aes pickle


【解决方案1】:

您可以将 pickle 数据作为加密数据本身存储到文件中。当您读取加密数据时,您将其解密为一个变量。如果将该变量包装在 io.StringIO 对象中,则可以像从文件中一样读取它,只是它现在在内存中。如果您尝试一下,我相信未来的问题可以帮助您解决如何读取解密数据,就好像它是泡菜数据一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多