Why Cryptinator?

Every design decision in Cryptinator was made with one question in mind: if someone stole your encrypted file, could they break into it? With a strong password, the answer should be no โ€” regardless of how powerful their hardware is or how much time they have.

The encryption: XChaCha20-Poly1305

Cryptinator uses XChaCha20-Poly1305 to encrypt your files. This is an authenticated encryption algorithm โ€” it doesn't just scramble your data, it also creates a mathematical seal that proves the file hasn't been tampered with.

If an attacker changes even a single byte of an encrypted file โ€” whether by accident or on purpose โ€” decryption will fail entirely. You can't be tricked into opening a file that's been modified. This is critical because some older encryption methods will happily decrypt corrupted or manipulated data without telling you anything is wrong.

Why XChaCha20 and not AES?

AES is well-known and widely used, but XChaCha20 has practical advantages. It uses a 192-bit nonce (the random number used during encryption), which is large enough that you can safely generate it randomly without ever worrying about collisions โ€” even if you encrypt billions of files. AES-GCM uses a 96-bit nonce, which is small enough that random generation carries a real risk of repeating, and a repeated nonce is catastrophic in AES-GCM โ€” it completely breaks the encryption. XChaCha20 also runs entirely in software without needing special CPU instructions, which means it performs consistently across all devices, from Windows PCs to Android phones.

The "Poly1305" part is the authentication tag โ€” a 128-bit fingerprint calculated over the entire encrypted file. It's checked before any decrypted data is released to you. Tampered file? Wrong password? Either way, you get nothing. This is called an "all-or-nothing" approach.

The password protection: Argon2id

Your password is the only thing standing between an attacker and your files. The question is: if someone has your encrypted file and tries to guess your password, how hard is it for them?

Cryptinator uses Argon2id to turn your password into an encryption key. Argon2id won the Password Hashing Competition โ€” an open, multi-year contest where cryptographers from around the world submitted and evaluated algorithms specifically designed to make password cracking as difficult as possible.

What makes Argon2id special?

Most password attacks use GPUs โ€” graphics cards that can try billions of simple calculations per second. Argon2id fights back by requiring large amounts of memory for each guess. Cryptinator's settings require 64 megabytes of RAM and 10 processing passes for every single password attempt. A GPU might be fast at arithmetic, but it can't hold 64 MB of RAM per core for thousands of simultaneous guesses. This makes brute-force attacks orders of magnitude slower and more expensive.

Think of it this way: if cracking a simple password hash is like trying keys on a lock, cracking an Argon2id hash is like trying keys on a lock where every attempt requires you to fill a swimming pool first, drain it, then try the next key. You might have a thousand keys to try, but each one takes enormous effort.

Even with the most powerful hardware available today, testing passwords against Cryptinator's Argon2id settings is painfully slow. A strong password combined with Argon2id makes brute-force attacks computationally impractical within any realistic timeframe.

A unique salt for every file

Every time you encrypt a file, Cryptinator generates a random 128-bit salt. This salt is mixed with your password during key derivation. The result is that even if you encrypt two different files with the same password, they produce completely different encryption keys.

Why does this matter? Without a unique salt, an attacker who cracks one file's password would instantly know the key for every file encrypted with that password. With unique salts, each file must be attacked individually. There are no shortcuts, no bulk attacks, and no rainbow tables.

A unique nonce for every encryption

In addition to a unique salt, Cryptinator generates a random 192-bit nonce for every encryption operation. The nonce ensures that encrypting the same file with the same password twice produces completely different ciphertext. An attacker looking at two encrypted files can't tell whether they contain the same data or not.

The 192-bit nonce space is so large โ€” 2192 possible values โ€” that the probability of generating the same nonce twice is effectively zero, even across trillions of encryptions. This is one of the key advantages of XChaCha20 over algorithms that use shorter nonces.

What happens if someone tampers with your file

Some encryption tools will decrypt a modified file and hand you corrupted data without any warning. This is dangerous โ€” an attacker could strategically modify parts of an encrypted file to manipulate the decrypted output.

Cryptinator prevents this entirely. The Poly1305 authentication tag covers the entire ciphertext. If any part of the encrypted file has been changed โ€” even a single bit โ€” the authentication check fails and decryption is refused. This means you should not unknowingly receive tampered data.

Integrity verification

If Cryptinator decrypts a file successfully, it means the file has passed authentication โ€” the data is what was originally encrypted, byte for byte, unchanged. If it's been modified in any way, decryption simply won't work.

Defence against repeated guessing

If someone gets hold of your encrypted file and tries to decrypt it with wrong passwords, Cryptinator slows them down. After three failed attempts, it introduces increasing delays โ€” 2 seconds, then 4, then 8, doubling each time up to 30 seconds per attempt. This makes automated password guessing impractical at the application level, on top of the protection Argon2id already provides at the cryptographic level.

Memory safety

After encryption or decryption, Cryptinator actively wipes sensitive data from memory โ€” your password-derived key, the plaintext, the salt, and the nonce are all zeroed out. The encryption key is also explicitly destroyed. This reduces the risk of sensitive data being recoverable from a memory dump or crash log.

Safe handling of folders and bundles

When you encrypt a folder or bundle of files, Cryptinator compresses them into a ZIP archive before encryption. During extraction, it checks every file path for directory traversal attacks โ€” a technique where a malicious archive tries to write files outside the intended folder. Cryptinator validates that every extracted file stays within the output directory. Suspicious paths are silently rejected.

How it compares

Feature Cryptinator
Encryption XChaCha20-Poly1305 (256-bit) Modern
Key derivation Argon2id (64 MB, 10 iterations) Best in class
Tamper detection Yes โ€” Poly1305 MAC on all data
Unique salt per file Yes โ€” 128-bit random
Unique nonce per file Yes โ€” 192-bit random
Nonce collision risk Effectively zero Safe
Memory cleanup Keys and plaintext wiped after use
Brute-force resistance Memory-hard + rate limiting Strong
Zip Slip protection Path validation + canonical checks

The bottom line

Cryptinator doesn't invent its own cryptography โ€” that would be reckless. Instead, it uses the same algorithms recommended by security researchers, used by VPN providers like WireGuard, and trusted by organisations handling sensitive data worldwide. The difference is that Cryptinator makes these tools accessible to everyone, not just engineers.

Your files are protected by a 256-bit encryption key derived from your password through a deliberately slow, memory-intensive process. Each file gets its own unique salt and nonce. The encrypted output is authenticated so tampering is detected. And when the work is done, sensitive data is scrubbed from memory.

Choose a strong password, and breaking the encryption becomes computationally impractical.

Ready to try it?

Download Cryptinator and encrypt your first file in seconds.

๐Ÿ”’ Download Cryptinator