VeraCrypt-compatible encrypted vault manager for Android
Website · Docs · Privacy Policy
Cryptography
- 🔐 Full VeraCrypt container compatibility — open containers created on desktop (Windows, macOS, Linux)
- 🔒 15 cipher configurations: AES, Serpent, Twofish, Camellia, Kuznyechik and all cascade combinations
- #️⃣ 5 PRF algorithms: SHA-512, SHA-256, Whirlpool, Streebog, BLAKE2s-256
- 🗝️ Keyfile support with pool-based derivation matching VeraCrypt's implementation, plus an in-app keyfile generator
- 🔢 PIM (Personal Iterations Multiplier) support
- 💽 FAT32, exFAT or ext4 inside the container — the ext4 driver is clean-room, no third-party filesystem code ships
Volume management
- 💾 Back up and restore the volume header
- 🔑 Change the password, PIM and keyfiles of an existing volume
- 👓 Read-only mount
- 🛡️ Hidden-volume protection while writing to the outer volume
- 📦 Move a vault between app storage and external storage
- 📊 Storage usage breakdown per vault
- 🔌 Vaults on USB flash drives over OTG — ships in the next release
Privacy
- 🫥 Hidden volumes for plausible deniability
- 🧮 Calculator disguise — an optional second launcher entry, under its own name and icon, that opens a working calculator
- 🚨 Panic PIN — instantly triggers a configurable wipe: each vault deleted, forgotten or kept, plus settings, history and biometric registrations
- 📵 Screenshots and screen recording blocked at the OS level; switching that off asks for the PIN
- 🔏 Auto-lock with configurable delay, unmounting every vault when it fires
- ⏳ PIN lockout timed against a monotonic clock, so moving the system clock does not shorten it
- 🌐 No network permission —
INTERNETis never declared andACCESS_NETWORK_STATEis stripped from the merged manifest
Vault access
- 👆 Biometric unlock per vault (hardware-backed, CryptoObject-bound)
- 🔓 Biometric unlock for the app itself, bound the same way
- ⏱️ Per-vault auto-unmount on screen lock or background
In-vault browsing
- 🖼️ Encrypted gallery with image and video viewer, fullscreen playback included
- ✂️ Photo editor — crop, filters, adjustments and markup, written straight back into the vault
- 🎵 Audio player with waveform and dominant-color theming, background playback with album art
- 📂 Full file manager — create, rename, delete, copy, move, import files and whole folders, export back out
- 🚪 Open a vault file in another app without decrypting it to storage
- 📥 Send files into a vault straight from the Android share sheet
- 🗂️ Vaults you opt in appear read-only in other apps' file pickers while mounted
UI
- 🎨 AMOLED Glass theme — frosted-glass system bars and dialogs on pure black
- 🌙 Dynamic Color (Material You) support
- 🌍 14 languages, switchable inside the app
- 🧭 Pick the tab a vault opens on
- 📱 Edge-to-edge, Android 10+
Arcanum is built directly on VeraCrypt's cryptographic C sources — the same AES, XTS, PBKDF2, and cascade cipher implementations used in the desktop application. Containers created in Arcanum open in VeraCrypt on desktop and vice versa, with no conversion or export needed.
The PIN is protected with Argon2id (t=2, m=64 MB, p=1) rather than a simple hash. A panic PIN and a disguise mode are included as first-class features, not afterthoughts.
git clone https://github.com/Esdex/Arcanum.git
cd Arcanum
./gradlew assembleFdroidReleaseRequirements:
- No JDK setup —
gradle/gradle-daemon-jvm.propertiesis tracked and pins the Gradle daemon to toolchain 21, so Gradle provisions Eclipse Adoptium 21 itself whatever the machine has. Do not setorg.gradle.java.home: the project file is tracked, and a machine-specific path there breaks every clone and the F-Droid reproducible build. - Android NDK 28.2.13676358 — pinned by
ndkVersioninapp/build.gradle.kts; the SDK manager fetches it if it is missing. r28 is what aligns the native libraries to 16 KB pages. - CMake 3.22.1+
- Min SDK 29 / Target SDK 36
The fdroid flavor builds with all features unlocked and no billing dependency. The playstore flavor includes Google Play Billing for the freemium tier.
| Layer | Technology |
|---|---|
| UI | Kotlin + Jetpack Compose (Material 3) |
| Navigation | Navigation Compose, single-Activity |
| Crypto core | C++/NDK — VeraCrypt's cipher sources via JNI bridge |
| File system | FatFs (FAT32/exFAT) + a clean-room ext4 driver, inside containers |
| Local storage | Room over SQLCipher (vault metadata), EncryptedSharedPreferences (Argon2id PIN hashes) |
| DI | Hilt |
| Media | ExoPlayer / Media3 |
| Network | None — INTERNET is not declared, and ACCESS_NETWORK_STATE is stripped from the merged manifest |
With the disguise on, the launcher entry is a working calculator. Entering the correct PIN navigates to the authenticated vault home. A panic PIN triggers PanicManager, which executes a background wipe before navigation completes, equalizing the response time between both paths.
For a deeper dive, see the architecture section in the docs.
The codebase has been reviewed using AI-assisted security analysis across multiple passes. Reports are published in /audits.
Reporting a vulnerability: Please use GitHub Security Advisories to report security issues privately. Do not open a public issue for vulnerabilities.
Contributions are welcome for bug fixes and non-cryptographic improvements (UI, translations, documentation, gallery/file manager features). For changes touching the crypto layer, JNI bridge, PIN/panic logic, or any other security-critical path, please open an issue first to discuss the approach.
- Run
./gradlew testand./gradlew lintbefore submitting - Changes to the ext4 driver must pass
tools/ext4/checkall.sh, which runs every native test stand and its mutation suite - Changes to the JNI error contract must keep
ErrorCodeSyncTestgreen — it is what stops the Kotlin and C error codes drifting apart - Native code changes must build cleanly for both
arm64-v8aandarmeabi-v7a - The
fdroidflavor must remain free of any Google Play Services dependency
If Arcanum is useful to you, you can support its development:
Bitcoin
bc1qk3pjpxfzafpc56924m8hnyewcgmutchwrg4v2p
Bitcoin Lightning
esdex@cake.cash
Ethereum
0xDc4B00d937e4a9633d37d70dDF56E8370f44E0f8
Monero
83xHcG9NNzLhsYQ9QoMcX2EFCwEPT1rSSa4EPgDMG3PqQEXVZ1vgaTtAq9x4zETjkRRK7CiH6giHshTLUJHTD4mCRBbt42s
Solana / USDT / USDC
GJgu5VqmEfxfQQbRpp9CDcYUxjsjUPJpHsCfyjRQGGSX
Copyright 2026 Esdex
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
The cryptographic core (app/src/main/cpp/veracrypt/) incorporates source code from VeraCrypt, which is licensed under Apache 2.0. Nine of those files (Common/Xts.c, Xts.h, Pkcs5.c, Pkcs5.h, Crc.c, Crc.h, Tcdefs.h, Password.h, Endian.h) derive from TrueCrypt 7.1a and carry VeraCrypt's dual header: the derived portions are governed by the TrueCrypt License 3.0, the modifications and additions by Apache 2.0.
- VeraCrypt — AES, Serpent, Twofish, Camellia, Kuznyechik, SHA-2, Whirlpool, Streebog, BLAKE2s, XTS mode implementation
- FatFs — FAT32/exFAT file system layer for in-container access
- ExoPlayer / Media3 — media playback inside encrypted containers
- Haze — frosted-glass UI effects
- BouncyCastle — Argon2id PIN key derivation
- SQLCipher — encryption of the app's own database
- Aire — image processing behind the photo editor
- Coil — thumbnail and image loading
- metadata-extractor — EXIF and media metadata
- Lottie — animations
- AboutLibraries — open-source license screen









