Encodean is a Java-based video encryption tool that provides strong, modern encryption for video files using AES‑256‑GCM, optional Zstandard (Zstd) compression, and a password-based key derivation function (KDF).
This project is designed as a clean, single-developer MVP, but follows cryptographic best practices and is structured to scale into a production-grade system.
- 🔐 AES‑256‑GCM authenticated encryption
- 🔑 Password-based key derivation (PBKDF2)
- 📦 Optional Zstd compression (compress → encrypt)
- 🧪 Full JUnit end-to-end tests (round-trip, wrong password, tamper detection)
- 🖥️ CLI interface (encrypt / decrypt)
- 📂 Streaming encryption (handles large video files)
java -jar encodean.jar encrypt input.mp4 output.enc --compress--compressor-cis optional- Password is prompted securely at runtime
java -jar encodean.jar decrypt output.enc output.mp4java -jar encodean.jar encrypt movie.mov movie.enc -c
java -jar encodean.jar decrypt movie.enc movie.movTest files live in:
src/test/resources/
├─ mov_sample.mov
└─ mp4_sample.mp4
Run all tests:
./gradlew testTest coverage includes:
- Round-trip encryption/decryption
- Compression on/off
- Wrong password failure
- Ciphertext tamper detection
- Chunked encryption (resume / partial decrypt)
- Argon2id KDF
- Public-key (recipient-based) encryption
- Versioned container header
- Desktop UI