c语言编程笔录

首页 >   > 笔记大全

笔记大全

如何使用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 函数进行加密解密。使用这些方法可以保证文件在传输过程中不被非法获取。

以解决方案的形式提供了三种不同的加密方法,根据具体需求可以选择适合自己的方法并进行应用。