Skip to content

Latest commit

 

History

History
118 lines (82 loc) · 4.23 KB

File metadata and controls

118 lines (82 loc) · 4.23 KB

Python 加密工具 (PBKDF2 + AES)

这是一个基于 Python 和 Tkinter 构建的图形界面加密工具。它使用 AES(CBC 模式)进行加密,使用 PBKDF2 进行密钥派生,为文本和文件提供高级别的安全性。

功能特点

  • 语言支持:可在英语和中文之间即时切换。
  • 文本加密/解密:使用自定义签名(密码)安全地加密消息。
  • 文件加密/解密:支持大文件处理,并带有进度跟踪。
  • 拖放功能:轻松将文件拖入应用程序(需要 tkinterdnd2)。
  • 安全性
    • 支持 AES-256(默认)、AES-192、AES-128。
    • 使用 PBKDF2-HMAC-SHA256 进行密钥派生,迭代次数为 10,000 次。
    • 每次操作都生成随机的 Salt 和 IV。
    • PKCS7 填充。

要求

  • Python 3.10+
  • 依赖包在 requirements.txt 中列出

安装

  1. 克隆或下载此仓库。

  2. 安装依赖:

    bash

    pip install -r requirements.txt
    

    注意:如果 tkinterdnd2 安装失败,应用程序仍可运行,但无法使用拖放功能。

使用方法

运行应用程序:

bash

python main.py

1. 控制面板(顶部)

  • 签名:在此处输入你的密码/口令。用于派生加密密钥。
  • 确认签名:可选的可视化确认,用于锁定你的意图。
  • 算法:选择 AES-128、AES-192 或 AES-256(默认)。
  • 语言:在英语和中文界面之间切换。
  • 设置输出目录:选择加密/解密文件的默认保存位置。

2. 文本加密(左侧)

  • 在底部文本框中输入文本。
  • 点击 加密
  • 结果(Base64 编码)将显示在顶部的历史记录日志中。

3. 文本解密(中间)

  • 将 Base64 编码的加密字符串粘贴到底部文本框中。
  • 确保 签名 与加密时使用的签名一致。
  • 点击 解密
  • 原始文本将显示在顶部的历史记录日志中。

4. 文件操作(右侧)

  • 加密文件
    • 将文件拖入顶部文本框或点击“选择文件”。
    • 点击 加密文件
    • 文件将以 .enc 扩展名保存在选定的输出目录(或同一文件夹)中。
  • 解密文件
    • 将加密文件(.enc)拖入底部文本框。
    • 点击 解密文件
    • 文件将被解密,并以 .dec 扩展名保存。

技术细节

  • 密钥派生
    • 函数:PBKDF2HMAC(SHA256)
    • 迭代次数:10,000
    • Salt:16 字节(每次加密随机生成,存储在输出中)
  • 加密
    • 算法:AES(CBC 模式)
    • IV:16 字节(每次加密随机生成,存储在输出中)
    • 填充:PKCS7(128 位块大小)
  • 文件格式
    • [Salt (16 字节)] [IV (16 字节)] [加密数据 ...]

参考文档

(1 封私信) 什么是AES加密?详解AES加密算法原理流程 - 知乎

(1 封私信) 深入浅出:Base64编码原理详解 - 知乎

⚠️ 免责声明

本仓库包含的加密/解密程序仅为学习、研究和实验目的而提供。作者不保证其安全性、完整性或适用性,使用本程序所产生的一切风险及后果由使用者自行承担。

重要声明

  1. 非专业用途 本程序仅为教学示例,不适用于保护真实场景中的敏感数据。其加密实现可能包含漏洞,无法达到工业级安全标准。
  2. 禁止用于非法用途 使用者不得将本程序用于任何非法活动,包括但不限于侵犯隐私、破坏系统或违反当地法律法规的行为。作者对任何滥用行为概不负责。
  3. 无担保责任 本程序按“原样”提供,作者明确不承担任何明示或暗示的担保责任,包括但不限于对适用性、特定功能或安全性的担保。使用本程序造成的任何直接或间接损失,作者不承担法律责任。
  4. 自行承担风险 任何使用者应自行评估程序的安全性及合规性,并在必要时咨询安全专家或法律顾问。

建议

  • 请勿使用本程序处理真实敏感数据。
  • 欢迎提交问题或改进代码,但请勿要求作者提供安全审计或技术支持。
  • 如发现安全漏洞,请通过 GitHub Issues 告知。