A lightweight, secure desktop file encryption utility for Windows. Built with Python, Tkinter, and the cryptography library.
=== ☢️ This Project Was Vibe-Coded ! ===
-
Authenticated Encryption: Uses AES-256-GCM in 64 KB streaming chunks with memory-hard scrypt key derivation (
$N=16384, r=8, p=1$ ). - STREAM Truncation Defense: Incorporates chunk-indexed associated data with finality markers to detect and prevent adversary chunk-stripping or truncation.
- Large File Streaming: Constant, minimal RAM overhead regardless of whether you encrypt megabytes or hundreds of gigabytes.
-
Accidental Re-encryption Guard: Automatically warns and asks for confirmation if queued files already carry the
.encextension. - Drag & Drop Ready: Drag single or multiple files directly from Windows Explorer into the queue window.
-
Passphrase Helpers:
- Show/Hide (
👁 Show/🙈 Hide) toggle. - One-click random passphrase generator (
🎲 Generate). - Real-time entropy strength and character count evaluator.
- Show/Hide (
-
Dark & Light Mode: Native Windows 10/11 DWM title bar styling (
dwmapi.dll) with full theme persistence across restarts. - Secure File Shredding: Optional zero-fill wiping before unlinking original files.
-
Clean Worker Cancellation: Responsive
⛔ Cancel Operationbutton that halts background workers and rolls back partial output files.
- Windows 10 or 11
- Python 3.10+ (optional if using the pre-compiled
.exe)
-
Clone or download this repository:
git clone https://github.com/your-username/EncryptorProject.git cd EncryptorProject -
Install dependencies:
pip install -r requirements.txt
-
Launch the application:
python main.py
Or launch silently without a command prompt:
pythonw run.pyw
To compile into a single .exe with the custom chest icon and bundled Tcl/Tk drag-and-drop binaries:
python -m PyInstaller --noconsole --onefile --icon="Chrisl21-Minecraft-Chest.ico" --add-data="Chrisl21-Minecraft-Chest.ico;." --collect-all tkinterdnd2 --name="FileEncryptor" main.pyThe resulting standalone binary will be placed in the dist/ directory:
dist/FileEncryptor.exe
EncryptorProject/
├── encryptor/
│ ├── __init__.py
│ ├── config.py # Persistent JSON settings manager (theme, geometry, flags)
│ ├── core.py # AES-256-GCM streaming engine & STREAM truncation defense
│ ├── gui.py # Tkinter interface, DWM theming, DnD, and background worker
│ └── vault.py # Windows DPAPI storage backend
├── Chrisl21-Minecraft-Chest.ico # Custom application and taskbar icon
├── main.py # Main application entry point & Win32 icon binding
├── run.pyw # Detached Windows silent launcher
├── requirements.txt # Python dependencies
├── .gitignore # Git exclusion rules
└── README.md # Project documentation
| Component | Specification |
|---|---|
| Cipher | AES-256-GCM (Galois/Counter Mode) |
| Chunk Size | 64 KB streaming blocks |
| Nonce Generation | 8-byte random prefix + 4-byte chunk counter |
| STREAM Defense | Chunk index + final chunk flag passed as associated_data
|
| Key Derivation | scrypt ( |
| Sanitization | Full zero-byte overwrite before file deletion |
This project is open-source and available under the MIT License.