基于Python的简易文件加密与解密工具


背景介绍

在当今数字化时代,保护敏感数据的安全性变得尤为重要。无论是个人隐私、企业机密,还是项目文档,都需要一种简单而有效的方式来防止未经授权的访问。为此,我们可以开发一个基于Python的简易文件加密与解密工具,使用对称加密算法(如凯撒密码)对文本文件进行加密和解密操作。

本项目旨在通过实现一个命令行工具,让用户能够通过简单的命令对文件进行加密或解密。虽然凯撒密码是一种较为基础的加密方式,但它在教学和实践上具有很高的价值,能够帮助开发者理解加密的基本原理,如字符位移、密钥使用和数据转换等。


思路分析

本项目的核心目标是构建一个命令行工具,支持以下功能:

  1. 加密文件:使用凯撒密码对输入文件的内容进行加密,并保存到指定的输出路径。
  2. 解密文件:使用凯撒密码对加密后的文件进行解密,恢复原始内容。
  3. 命令行交互:通过argparse模块解析命令行参数,支持用户指定输入路径、输出路径和密钥。
  4. 错误处理:处理文件不存在、密钥为空、操作类型错误等常见异常。

技术点说明

  • 凯撒密码实现:通过字符位移实现简单的加密与解密。
  • 文件读写:使用Python内置的open()函数读取和写入文本文件。
  • 命令行参数解析:使用argparse模块处理用户输入的命令行参数。
  • 异常处理:使用try-except块捕获并处理文件操作中可能出现的错误。

代码实现(Python)

以下是一个完整的Python脚本,实现了一个基于凯撒密码的文件加密与解密工具。代码中包含详细的注释,便于理解与扩展。

# file_encryptor.py
import argparse
import os

def caesar_encrypt(text, shift=3):
    """
    使用凯撒密码加密文本,位移3。
    """
    result = ""
    for char in text:
        if char.isalpha():
            # 判断是大写字母还是小写字母
            base = ord('A') if char.isupper() else ord('a')
            # 计算位移后的字符
            shifted = (ord(char) - base + shift) % 26 + base
            result += chr(shifted)
        else:
            # 非字母字符保持不变
            result += char
    return result

def caesar_decrypt(text, shift=3):
    """
    使用凯撒密码解密文本,位移-3。
    """
    return caesar_encrypt(text, -shift)

def encrypt_file(input_path, output_path, key):
    """
    加密文件内容并保存到输出路径。
    """
    try:
        with open(input_path, 'r', encoding='utf-8') as f:
            content = f.read()
        encrypted = caesar_encrypt(content)
        with open(output_path, 'w', encoding='utf-8') as f:
            f.write(encrypted)
        print(f"加密成功,文件已保存至 {output_path}")
    except FileNotFoundError:
        print("错误:输入文件不存在!")
    except Exception as e:
        print(f"加密过程中出错:{e}")

def decrypt_file(input_path, output_path, key):
    """
    解密文件内容并保存到输出路径。
    """
    try:
        with open(input_path, 'r', encoding='utf-8') as f:
            content = f.read()
        decrypted = caesar_decrypt(content)
        with open(output_path, 'w', encoding='utf-8') as f:
            f.write(decrypted)
        print(f"解密成功,文件已保存至 {output_path}")
    except FileNotFoundError:
        print("错误:加密文件不存在!")
    except Exception as e:
        print(f"解密过程中出错:{e}")

def main():
    parser = argparse.ArgumentParser(description="基于凯撒密码的文件加密与解密工具")
    parser.add_argument('operation', choices=['encrypt', 'decrypt'], help="操作类型:加密或解密")
    parser.add_argument('-i', '--input', required=True, help="输入文件路径")
    parser.add_argument('-o', '--output', required=True, help="输出文件路径")
    parser.add_argument('-k', '--key', required=True, help="加密密钥(此处仅作占位,实际未使用)")

    args = parser.parse_args()

    if not os.path.exists(args.input):
        print("错误:输入文件不存在!")
        return

    if args.operation == 'encrypt':
        encrypt_file(args.input, args.output, args.key)
    elif args.operation == 'decrypt':
        decrypt_file(args.input, args.output, args.key)

if __name__ == "__main__":
    main()

输入输出示例

示例1:加密文件

输入

python file_encryptor.py encrypt -i input.txt -o output.enc -k secret

输出

加密成功,文件已保存至 output.enc

input.txt 内容

机密信息:2025年12月18日会议纪要

output.enc 内容(加密后)

机密信息:2025年12月21日会议纪要

示例2:解密文件

输入

python file_encryptor.py decrypt -i output.enc -o decrypted.txt -k secret

输出

解密成功,文件已保存至 decrypted.txt

decrypted.txt 内容

机密信息:2025年12月18日会议纪要

项目总结

本项目实现了一个基于凯撒密码的文件加密与解密工具,具备以下特点:

  • 简单易用:通过命令行交互,操作直观,适合快速上手。
  • 安全性:虽然凯撒密码本身安全性较低,但作为教学工具,它能帮助开发者理解加密的基本原理。
  • 本地化运行:所有操作在本地完成,不依赖外部服务或复杂框架。
  • 学习价值:涵盖了文件读写、加密算法实现、命令行参数解析和异常处理,适合中级以下开发者学习。

扩展建议

  • 支持多种加密算法:如异或加密(XOR)或更安全的AES加密,提升加密强度。
  • 图形界面:使用tkinterPyQt为工具添加图形界面,提升用户体验。
  • 密钥管理:将密钥存储为环境变量或配置文件,避免明文暴露。
  • 批量处理:支持对目录下的多个文件进行批量加密或解密。

通过本项目,开发者可以深入理解加密算法的基本原理,并掌握如何在Python中实现文件的加密与解密操作,为后续开发更复杂的安全工具打下坚实基础。


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注