如何使用python加密主机文件
更新时间:2024-01-04第一段:Python 加密文件的常用方法
使用Python加密文件,常见的方法是对文件进行加密解密。对于文本文件,常见的加密方法是使用 Python 的 base64 模块进行编码和解码,也可以使用 hashlib 模块的 md5 或 sha1 方法生成摘要,再进行加密。下面给出一个将文本文件加密的示例:
import base64
def encode_file(file_name):
with open(file_name, 'rb') as f:
content = f.read()
base64_bytes = base64.b64encode(content)
with open(file_name + '.enc', 'wb') as f:
f.write(base64_bytes)
def decode_file(file_name):
with open(file_name, 'rb') as f:
base64_bytes = f.read()
content = base64.b64decode(base64_bytes)
with open(file_name + '.dec', 'wb') as f:
f.write(content)
第二段:使用 pyAesCrypt 对文件进行加密
对于非文本文件,比如图片等二进制文件,我们需要使用其他方法进行加密。这里我们可以使用 pyAesCrypt 模块来进行加密解密,该模块需要额外安装。
import pyAesCrypt
buffer_size = 64 * 1024
password = "StrongPassword"
file_name = "file.png"
enc_file_name = file_name + ".enc"
# 加密
with open(file_name, "rb") as f_in:
with open(enc_file_name, "wb") as f_out:
pyAesCrypt.encryptStream(f_in, f_out, password, buffer_size)
# 解密
with open(enc_file_name, "rb") as f_in:
with open("decrypted_" + file_name, "wb") as f_out:
pyAesCrypt.decryptStream(f_in, f_out, password, buffer_size)
第三段:使用 fernet 对文件进行加密
如果不想安装额外的模块,我们也可以使用 Python 自带的 cryptography 模块中的 fernet 函数进行加密解密。fernet 通过对称密钥算法生成加密密钥,并使用 AES CBC 加密算法进行加密和解密。
from cryptography.fernet import Fernet
key = Fernet.generate_key()
cipher_suite = Fernet(key)
file_name = "file.png"
# 加密
with open(file_name, 'rb') as f_in:
with open(file_name + '.enc', 'wb') as f_out:
cipher_text = cipher_suite.encrypt(f_in.read())
f_out.write(cipher_text)
# 解密
with open(file_name + '.enc', 'rb') as f_in:
with open(file_name + '.dec', 'wb') as f_out:
plain_text = cipher_suite.decrypt(f_in.read())
f_out.write(plain_text)
第四段:总结
本文介绍了三种常见的 Python 文件加密方法,分别是对文本文件使用 base64 编码和解码、使用 pyAesCrypt 进行加密解密以及使用 cryptography 模块中的 fernet 函数进行加密解密。使用这些方法可以保证文件在传输过程中不被非法获取。
以解决方案的形式提供了三种不同的加密方法,根据具体需求可以选择适合自己的方法并进行应用。