python 实现批量文件加密功能

  • Post category:Python

下面是详细讲解Python实现批量文件加密功能的完整实例教程。

确定需求与方案

首先,我们需要明确需求和方案。这里我们需要实现的是一个批量文件加密功能,具体的方案可以采用AES算法对文件进行加密。

安装依赖模块

在开始编写代码前,我们需要先安装必要的依赖模块。这里我们需要使用pycryptodome来实现AES加密算法。

可以使用pip install pycryptodome命令来安装。

编写代码

了解了以上的内容我们就可以开始写代码了。具体的实现步骤如下:

  1. 导入需要的模块
  2. 定义加密密码
  3. 定义加密函数
  4. 遍历文件夹中的所有文件,对文件进行加密
  5. 对加密后的文件进行重命名

代码实现如下:

from Crypto.Cipher import AES
import os

# 定义加密密码
password = 'passwordpassword'

# 定义加密函数
def encrypt_file(filename):
    # 以二进制方式读取文件
    with open(filename, 'rb') as f:
        data = f.read()
        # 补全数据长度到AES块大小的倍数
        length = AES.block_size - (len(data) % AES.block_size)
        data += bytes([length])*length
        # 加密数据
        cipher = AES.new(password.encode('utf-8'), AES.MODE_ECB)
        encrypted_data = cipher.encrypt(data)
        # 以加密后的数据写入文件
        with open(filename, 'wb') as fw:
            fw.write(encrypted_data)

# 遍历文件夹中的所有文件,对文件进行加密
def encrypt_files(rootdir):
    for root, dirs, files in os.walk(rootdir):
        for file in files:
            # 排除加密程序自身
            if file != os.path.basename(__file__):
                filename = os.path.join(root, file)
                encrypt_file(filename)
                # 对加密后的文件进行重命名
                os.rename(filename, filename + '.encrypted')

if __name__ == '__main__':
    # 遍历当前目录下所有文件
    encrypt_files('.')

示例说明

示例1:加密单个文件

首先,我们可以使用上述代码中的encrypt_file函数对单个文件进行加密。例如,我们有一个名为test.txt的文件,在执行下列代码时就会将其加密:

encrypt_file('test.txt')

示例2:批量加密文件夹内所有文件

为了演示批量加密的功能,我们先创建一个名为testfolder的文件夹,并在其中添加一些文件。然后,我们可以使用encrypt_files函数对该文件夹中的所有文件进行加密:

encrypt_files('testfolder')

执行后,该文件夹中的所有文件都会被加密,并以原文件名加上’.encrypted’作为新的文件名。