High-performance file encryption for Android powered by Rust
Features โข Screenshots โข Installation โข Build โข Usage
CIPH Vault is a production-grade Android application that provides military-grade file encryption using the CIPH v2 encryption engine written in Rust. It features a beautiful gallery-style interface for managing your sensitive media files with ease.
- ๐ Military-grade encryption: AES-256-GCM with Argon2 key derivation
- โก Blazing fast: Parallel processing with Rayon for maximum speed
- ๐จ Beautiful UI: Modern Material 3 design with dark theme
- ๐ฑ User-friendly: Gallery-style file browser with multi-select
- ๐พ Organized storage: Encrypted files stored in Downloads/ciph/
- ๐ Dual passwords: Meta and Data password protection
- AES-256-GCM authenticated encryption
- Argon2id key derivation function
- Dual password system (Meta + Data)
- Parallel processing for fast encryption
- Chunk-based processing with progress tracking
- Metadata preservation (file names, timestamps, permissions)
- Gallery view for images and videos
- Multi-select with visual feedback
- Real-time progress tracking
- Encrypted file browser
- Password visibility toggle
- Dark theme optimized interface
- Automatic organization: Encrypted files in Downloads/ciph/
- One-tap decryption: Restore files to Downloads
- File size display: Human-readable sizes
- Sorted by date: Most recent first
- Video thumbnails: Preview before encryption
Browse your images and videos in a beautiful grid layout with multi-select capability.
Secure dual-password entry with visibility toggles for both Meta and Data passwords.
View all your encrypted files organized in one place with easy decryption access.
Learn about CIPH Vault's features and how to use the app effectively.
- Go to Releases
- Download the latest
ciph-vault-release.apk - Install on your Android device (Enable "Install from Unknown Sources")
- Fork this repository
- Go to Actions tab
- Click Build APK workflow
- Click Run workflow
- Wait for build to complete (~5-10 minutes)
- Download APK from Artifacts
See Building from Source below.
- Android Studio Hedgehog (2023.1.1) or later
- Rust 1.70+ with Android targets
- Android NDK r25c or later
- JDK 17
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Add Android targets
rustup target add aarch64-linux-android
rustup target add armv7-linux-androideabi
rustup target add i686-linux-android
rustup target add x86_64-linux-androidIn Android Studio:
- Tools โ SDK Manager
- SDK Tools tab
- Check NDK (Side by side)
- Select version 25.1.8937393
- Click Apply
export ANDROID_HOME=$HOME/Android/Sdk
export NDK_HOME=$ANDROID_HOME/ndk/25.1.8937393
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-toolsAdd these to your ~/.bashrc or ~/.zshrc for persistence.
# Clone repository
git clone https://github.com/ankit-chaubey/ciph-vault.git
cd ciph-vault
# Build Rust library
./gradlew cargoBuild
# Build APK
./gradlew assembleDebug
# Or build release
./gradlew assembleRelease# Install debug build
./gradlew installDebug
# Or install release
adb install app/build/outputs/apk/release/app-release.apk- Open Android Studio
- File โ Open โ Select
ciph-vaultfolder - Wait for Gradle sync and Rust build
- Click Run (
โถ๏ธ ) or Build โ Build APK
-
Open Gallery Tab
- Browse your images and videos
- Tap files to select them
- Or use "Select All" button
-
Tap Lock Button (floating action button)
- Enter Meta Password
- Enter Data Password
- Tap Encrypt
-
Wait for Completion
- Progress bar shows real-time status
- Encrypted files saved to Downloads/ciph/
-
Open Encrypted Tab
- View all encrypted files
- Tap on a file to decrypt
-
Enter Passwords
- Enter same Meta Password
- Enter same Data Password
- Tap Decrypt
-
File Restored
- Decrypted file saved to Downloads
- Original filename and metadata restored
- Use strong passwords: Mix uppercase, lowercase, numbers, symbols
- Different passwords: Use different Meta and Data passwords
- Remember them: No password recovery available
- Write them down: Store securely offline
ciph-vault/
โโโ .github/
โ โโโ workflows/
โ โโโ build.yml # GitHub Actions workflow
โ
โโโ app/
โ โโโ src/main/
โ โ โโโ java/com/ciph/vault/
โ โ โ โโโ CiphNative.kt # JNI bridge to Rust
โ โ โ โโโ MainActivity.kt # Main UI (gallery, encryption)
โ โ โโโ res/ # Android resources
โ โ โโโ AndroidManifest.xml
โ โโโ build.gradle.kts # App build configuration
โ โโโ proguard-rules.pro # ProGuard optimization
โ
โโโ rust-lib/
โ โโโ src/
โ โ โโโ lib.rs # CIPH v2 core engine
โ โ โโโ api.rs # API layer
โ โ โโโ ffi.rs # JNI bindings
โ โโโ Cargo.toml # Rust dependencies
โ
โโโ build.gradle.kts # Root build configuration
โโโ settings.gradle.kts
โโโ README.md # This file
- Algorithm: AES-256-GCM (Galois/Counter Mode)
- Key Derivation: Argon2id
- Memory: 64 MB
- Iterations: 3
- Parallelism: 1
- Nonce: 96-bit random nonce per chunk
- Authentication: 128-bit authentication tag per chunk
- Chunk Size: 16 MB (configurable)
[128-byte header]
[Encrypted metadata]
[Encrypted chunk 1 + auth tag]
[Encrypted chunk 2 + auth tag]
...
Header contains:
- Magic bytes:
CIPH - Version: 2
- Salt (16 bytes)
- Master nonce (12 bytes)
- Argon2 parameters
- Metadata length
- Encryption Speed: 50-400+ MB/s (device dependent)
- Parallel Processing: Uses all available CPU cores
- Memory Efficient: Streaming with memory-mapped I/O
- APK Size: ~15-20 MB (all architectures)
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
# Run tests
./gradlew test
# Run Rust tests
cd rust-lib && cargo test
# Format code
./gradlew ktlintFormat
cd rust-lib && cargo fmt
# Lint
./gradlew lint
cd rust-lib && cargo clippyThis project is licensed under the MIT License - see the LICENSE file for details.
Ankit Chaubey
- GitHub: @ankit-chaubey
- Email: m.ankitchaubey@gmail.com
- Rust Crypto Community for excellent cryptography libraries
- Android Jetpack Compose team for modern UI framework
- Mozilla for rust-android-gradle plugin
- All contributors and testers
- Large files (>1GB) may take several minutes to encrypt
- Some devices may require "Allow from this source" for installation
- Android 11+ requires "All files access" for best experience
If you encounter any issues or have questions:
- Check Issues
- Open a new issue with:
- Device model and Android version
- Steps to reproduce
- Expected vs actual behavior
- Logcat output (if applicable)
- Password Recovery: There is NO password recovery. If you forget your passwords, your files cannot be decrypted.
- Backup: Always keep unencrypted backups of important files.
- Testing: Test encryption/decryption with non-critical files first.
- Updates: Keep the app updated for latest security patches.
- Cloud backup integration
- Biometric authentication
- Password manager integration
- Batch operations optimization
- File compression before encryption
- Secure file shredding
- Multi-language support
Made with โค๏ธ and ๐ฆ Rust
โญ Star this repository if you find it useful!