如何使用Python加密任何类型的文件



因此,我尝试读取该文件并用cryptography.fernet加密其内容,但有时该文件包含无法通过该库中使用的任何算法加密的字符。我还尝试了一个名为pyAesCrypt的库,它具有以下功能:pyAesCrypt.encryptFile("data.txt", "data.txt.aes", password)。但它也无法加密某些文件类型,如gif。我对后台的加密算法不太了解,但有没有什么方法可以加密所有文件,无论它们包含什么字符?或者先对它们进行编码,去掉这些字符,然后再加密它们?我只是根据我对这个话题的一些小知识提出一些想法。

我尝试使用Fernet库的代码:

from cryptography.fernet import Fernet
key = Fernet.generate_key()
f = Fernet(key)
with open(filename, "r") as file:
file_data = file.read()
encrypted_data = f.encrypt(file_data.encode()).decode()
with open(filename, "w") as file:
file.write(encrypted_data)

当我尝试使用GIF时,我会得到:

UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 466: character maps to <undefined>

您必须以二进制模式打开文件进行读写。由于encrypt方法期望字节作为参数,因此通过这种方式可以加密任何文件,无论其类型如何。

from cryptography.fernet import Fernet
key = Fernet.generate_key()
f = Fernet(key)
with open(filename, "rb") as file:
file_data = file.read()
encrypted_data = f.encrypt(file_data)
with open(filename, "wb") as file:
file.write(encrypted_data)

最新更新