FileCrypter is a cross-platform file encryption app for encrypting and decrypting files. The UI is built with Vue 3 and the cryptographic operations live in a Rust/Tauri backend.
Current development and release workflows are desktop-first (macOS, Windows). Mobile support (iOS/Android) is a future goal.
See README_USER.md for end-user instructions (how to encrypt/decrypt, batch mode, troubleshooting).
- Password-based encryption using AES-256-GCM.
- Argon2id key derivation with per-file salt.
- Streaming (chunked) encryption/decryption for all files (default 1MB chunks).
- Optional ZSTD compression (reduces file size by ~70% for text/documents).
- Batch encrypt/decrypt with progress updates (compression enabled by default).
- Native file dialogs via Tauri.
- Frontend: Vue 3 + TypeScript + Vite
- Backend: Rust + Tauri v2
- Package manager: Bun (frontend), Cargo (backend)
src/frontend app (entry:src/main.ts, root:src/App.vue)src/components/UI tabs and panelssrc/composables/shared frontend logicsrc/utils/,src/constants.ts, andsrc/shared.cssprovide shared helpers, constants, and global stylessrc/types/TypeScript typessrc-tauri/Rust/Tauri backend (commands + crypto modules)src-tauri/src/security/security helpers, plus shared error/event types insrc-tauri/src/error.rsandsrc-tauri/src/events.rs
Prerequisites:
- Bun installed for frontend tooling
- Rust toolchain for the Tauri backend
Install dependencies:
bun installRun the frontend in the browser:
bun run devRun the full app locally (desktop workflow):
bun run tauri:devBuild:
bun run build
bun run tauri:buildPreview the production frontend build in a browser:
bun run previewPlatform note:
bun run tauri:buildbuilds bundles for the host OS only (Windows builds on Windows, macOS builds on macOS).- Cross-building for other OSes typically requires building on that OS with its toolchain/SDK.
- Mobile targets are not currently part of the active development/release workflow.
Pre-built releases are not notarized with Apple. macOS will block the app from opening by default. To allow it, run this command in Terminal after downloading:
xattr -r -d com.apple.quarantine /Applications/FileCrypter.appAdjust the path if you installed the app elsewhere.
Run Rust tests (unit + integration):
cd src-tauri
cargo testRun the Rust linter:
cd src-tauri
cargo clippyRun the frontend linter:
bun run lint- Encryption uses AES-256-GCM with Argon2id key derivation.
- Each encryption generates a unique salt and base nonce; per-chunk nonces are derived with BLAKE3 and the chunk index.
- File I/O is handled in Rust; the frontend only invokes commands.
- All file operations use streaming (chunked) encryption/decryption with atomic writes (temp file + rename).
- Compression uses compress-then-encrypt strategy (industry standard used by SSH, TLS).
- Batch operations validate max file count (1000) and continue on per-file failures.
FileCrypter uses two file format versions:
- Version 4: Standard encrypted format (no compression)
- Version 5: Encrypted format with ZSTD compression metadata
Version 5 extends Version 4 with compression fields in the header. Both versions are fully supported for decryption, ensuring backward compatibility.
See AGENTS.md for repository guidelines and contribution practices.