Skip to content

novafluxx/filecrypter

Repository files navigation

Tests CodeQL

FileCrypter

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.

End-User Guide

See README_USER.md for end-user instructions (how to encrypt/decrypt, batch mode, troubleshooting).

Features

  • 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.

Tech Stack

  • Frontend: Vue 3 + TypeScript + Vite
  • Backend: Rust + Tauri v2
  • Package manager: Bun (frontend), Cargo (backend)

Project Structure

  • src/ frontend app (entry: src/main.ts, root: src/App.vue)
  • src/components/ UI tabs and panels
  • src/composables/ shared frontend logic
  • src/utils/, src/constants.ts, and src/shared.css provide shared helpers, constants, and global styles
  • src/types/ TypeScript types
  • src-tauri/ Rust/Tauri backend (commands + crypto modules)
  • src-tauri/src/security/ security helpers, plus shared error/event types in src-tauri/src/error.rs and src-tauri/src/events.rs

Getting Started

Prerequisites:

  • Bun installed for frontend tooling
  • Rust toolchain for the Tauri backend

Install dependencies:

bun install

Run the frontend in the browser:

bun run dev

Run the full app locally (desktop workflow):

bun run tauri:dev

Build:

bun run build
bun run tauri:build

Preview the production frontend build in a browser:

bun run preview

Platform note:

  • bun run tauri:build builds 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.

Installation

macOS (Unsigned Builds)

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.app

Adjust the path if you installed the app elsewhere.

Testing & Linting

Run Rust tests (unit + integration):

cd src-tauri
cargo test

Run the Rust linter:

cd src-tauri
cargo clippy

Run the frontend linter:

bun run lint

Security Notes

  • 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.

File Format

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.

Contributing

See AGENTS.md for repository guidelines and contribution practices.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Contributors