Full Documentation
📖

How To Use ZevSafe

Step-by-step guide to encrypting and decrypting your folders with military-grade AES-256-GCM — all inside your browser, all offline.

1

Open ZevSafe

Open index.html in any modern browser (Chrome, Edge, Firefox, Safari). No installation. Works fully offline after first load.

2

Select Your Folder

In the Lock a Folder panel, drag & drop your folder onto the drop zone, or click Browse Folder. All nested subfolders and files are included automatically.

3

Create a Strong Password

Type a password — watch the strength meter turn green. Aim for "Strong" or better: mix uppercase, numbers, symbols. Use the 👁 button to check what you typed. Confirm in the second field.

4

Click "Encrypt & Download"

ZevSafe compresses your folder, derives an AES-256-GCM key with PBKDF2, encrypts everything, and auto-downloads a single yourfolder.enc file. Watch the live progress log.

5

Store Your Vault Safely

Move the .enc file to your USB, SD card, or cloud storage. Never forget your password — there is no recovery mechanism. The file is completely useless without it.

1

Open ZevSafe

Open index.html on any device — Windows, Mac, Linux, Android, or iOS. No account or special software required.

2

Load Your .enc File

In the Unlock a Vault panel, drag & drop your .enc file or click Select .enc File. The file must not be modified or renamed to a different extension.

3

Enter Your Password

Type the exact password you used when encrypting. AES-GCM automatically verifies the data — a wrong password causes an immediate, safe error with no data leaked.

4

Click "Decrypt & Download"

ZevSafe verifies the GCM authentication tag, decrypts the vault, and downloads yourfolder_decrypted.zip with your complete folder structure intact.

5

Extract the ZIP

Right-click → Extract All (Windows) or double-click (macOS) to restore your original files. Every file and subfolder is preserved exactly as it was.

ParameterValue
CipherAES-256-GCM (Authenticated Encryption)
Key Size256 bits
Key DerivationPBKDF2-SHA256 · 100,000 iterations
Salt16 bytes — random per encryption, stored in file header
IV / Nonce12 bytes — random per encryption, stored in file header
Authentication Tag128-bit GCM tag — detects tampering automatically
CompressionDEFLATE level 6 via JSZip, applied before encryption
File FormatSalt (16B) + IV (12B) + Ciphertext + GCM Tag
Random Sourcewindow.crypto.getRandomValues() — browser CSPRNG
Crypto EngineWeb Crypto API — native, no external crypto library
Network UsageZero — 100% offline after page load

1. Key Derivation Pipeline (PBKDF2-SHA256)

Raw passwords are never used directly as keys. To prevent dictionary attacks and brute-forcing, ZevSafe employs a secure key stretching pipeline:

  • Salt Generation (16 Bytes): A unique, random 128-bit salt is generated for each operation using the browser's cryptographically secure pseudo-random number generator (CSPRNG), window.crypto.getRandomValues(). This makes rainbow tables and pre-computed attacks completely useless.
  • PBKDF2 Stretching: The password and salt are processed through the Password-Based Key Derivation Function 2 (PBKDF2) using SHA-256 as the underlying hash function.
  • 100,000 Iterations: The key derivation runs for exactly 100,000 iterations. This heavy stretching introduces a significant computational delay for attackers, making brute-force cracking mathematically infeasible.
  • Key Derivation: The stretched result is derived as a 256-bit symmetric cryptographic key ready for AES encryption.

2. Step-by-Step Encryption Flow

When you drop a folder and click "Encrypt & Download", the browser executes the following sequence:

  • Step 2.1: Folder Compression (JSZip): The selected folder structure is compressed in-memory into a single ZIP binary stream using the DEFLATE algorithm (compression level 6). This hides original filenames and directory layout structure inside the compressed payload.
  • Step 2.2: Header Variables: The CSPRNG generates a random 16-byte Salt and a 12-byte Initialization Vector (IV/Nonce).
  • Step 2.3: Key Stretching: The browser derives a 256-bit key from the password and Salt using PBKDF2-SHA256 (100k iterations) via crypto.subtle.deriveKey().
  • Step 2.4: AES-256-GCM ciphering: The ZIP binary stream is encrypted using AES-GCM-256 with the derived key and the 12-byte IV. During this operation, a 16-byte (128-bit) GCM authentication tag is generated to ensure integrity.
  • Step 2.5: Packaging: The outputs are packed into a single binary array using a specific layout:
    [ Salt (16 Bytes) ]  +  [ IV (12 Bytes) ]  +  [ Ciphertext (Variable) ]  +  [ GCM Tag (16 Bytes) ]
  • Step 2.6: Disk Write: The packed array is downloaded as a single .enc file directly via browser local memory.

3. Step-by-Step Decryption Flow

When you upload a .enc file and click "Decrypt & Download", the reverse sequence takes place:

  • Step 3.1: Parsing Headers: The browser reads the raw binary array of the .enc file. It extracts the first 16 bytes as the Salt, the next 12 bytes (bytes 16–27) as the IV, and the rest as the ciphertext payload (which implicitly contains the 16-byte GCM tag appended at the end).
  • Step 3.2: Re-deriving the Key: The user-provided password and the extracted 16-byte Salt are passed to crypto.subtle.deriveKey() to re-derive the 256-bit AES-GCM key using the exact same PBKDF2 parameters (100k iterations, SHA-256).
  • Step 3.3: Cryptographic Decryption & Integrity Check: The browser calls crypto.subtle.decrypt() using the re-derived key and the extracted 12-byte IV. The Web Crypto engine automatically calculates the authentication tag and compares it to the GCM tag appended to the ciphertext.
    Note: If even a single byte has been modified, or if the password is incorrect, the tags will not match. The operation throws an OperationError and immediately aborts, preventing tampered data or wrong passwords from corrupting memory.
  • Step 3.4: ZIP Extraction: Upon successful decryption, the resulting clean binary ZIP payload is read by JSZip, which extracts the original folder layout, subfolders, and files exactly as they were.
  • Step 3.5: Delivery: The files are packed as a zip archive and downloaded as *_decrypted.zip.

✅ Use a Long Passphrase

Something like "blue-tiger-rain-42!" is far stronger than a short complex password. Aim for 16+ characters.

❌ No Password Recovery

There is no backdoor, no reset. Losing your password means permanently losing your data. Period.

⚠️ Test Before Deleting Originals

Always verify decryption works before removing the original files. Keep a backup during your first use.

🔒 Use It Fully Offline

For maximum security, disable your internet and run ZevSafe locally. Your data never leaves RAM.

✅ Perfect for SD Cards

Encrypt folders folder-by-folder onto your SD card. Each .enc file is fully portable and self-contained.

❌ Never Modify the .enc File

Even a single changed byte will cause GCM authentication to fail. The file is tamper-proof by design.

Yes. ZevSafe makes zero network requests. All encryption runs inside your browser using the native Web Crypto API. Open DevTools → Network tab while using it — you'll see no outgoing requests. For maximum trust, clone the repo and open it locally from your hard drive.
Chrome 37+, Edge 12+, Firefox 34+, Safari 11+, Opera 24+ — covering 99%+ of devices including Android and iOS. Internet Explorer is not supported.
ZevSafe executes all operations locally in your browser's sandboxed RAM.

Desktop Limits: Folders up to 1.5 GB to 2.5 GB work smoothly.
Mobile Limits (iOS/Android): Folders up to 300 MB to 500 MB are recommended due to strict mobile browser memory caps.

Why is there a limit? The browser requires RAM to temporarily hold the original files, the in-memory zipped stream, and the encrypted array buffer during processing. If this exceeds your browser tab's heap allocation limits, the tab will crash.

For very large files (e.g. 10GB+): You can divide them into smaller sub-folders, or use the command-line PowerShell scripts (encrypt.ps1 / decrypt.ps1) provided in the root folder. These stream bytes directly from your hard drive, allowing you to encrypt folders of any size without RAM limits.
Yes. Open ZevSafe in Chrome (Android) or Safari (iOS) and use the Decrypt panel normally. Both fully support the Web Crypto API.
AES-GCM's authentication tag fails instantly — you'll see a clear error message. No partial or corrupted data is ever produced. This is one of GCM mode's key advantages over older modes like CBC.
ZevSafe encrypts at the folder level. Organise your SD card into logical folders and encrypt each separately. This also lets you decrypt only what you need, not the entire card at once.
Yes — all files, subfolder structure, and filenames are preserved byte-for-byte. Just extract the ZIP to fully restore your original layout.
🔒

Ready to Secure Your Files?

Go back to ZevSafe and start encrypting. Your data is yours — keep it that way.

🔐 Open ZevSafe