在 Python 3.7 中解压和解密内存中的文件

Unpickling and decrypting a file in memory in Python 3.7

我有一个腌制的 .pkl 文件,我使用以下加密方式对其进行了加密:

def encrypt_file(filepath, key):
    f = Fernet(key)
    with open(filepath, "rb") as file:
        file_data = file.read()

    encrypted_data = f.encrypt(file_data)
    with open(filepath, "wb") as file:
        file.write(encrypted_data)

我现在想解密和unpickle 内存中的文件。这是因为我不想更改存储中的实际文件。

我尝试了以下方法:

f = Fernet(key)
with open(filepath, "rb") as file:
    encrypted_data = file.read(file)
    decrypted_data = f.decrypt(encrypted_data)
    vectorizer = p.load(decrypted_data)

原文件写成pickle.pkl然后加密

所以我想我可以只加载 Python 中的文件,解密然后解开它。不幸的是,我收到以下错误,我不确定如何修复它:

web_1 | vectorizer = p.load(decrypted_data)
web_1 | TypeError: file must have 'read' and 'readline' attributes

使用pickle.loads():

f = Fernet(key)
with open(filepath, "rb") as file:
    encrypted_data = file.read(file)
    decrypted_data = f.decrypt(encrypted_data)
    vectorizer = p.loads(decrypted_data)