A plain-English explanation of what happens when you click "encrypt." Lock-and-key analogies, the role of keys, and where things actually run.
Updated May 18, 2026
Encryption gets explained badly more often than not. The math is intimidating. The terminology is overloaded. The marketing on top makes everything murkier. Here's a clean version, without math, that should leave you knowing enough to ask better questions.
Encryption is sometimes described as putting a file in a digital safe. You lock the safe with a key. Only someone with the same key can unlock it. That's basically right.
Where the analogy breaks: a physical safe is a one-of-a-kind thing. A digital "safe" is just a mathematical procedure applied to bytes. You can run the procedure as many times as you want on as many files as you want. The interesting question isn't "where's the safe?" but "where's the key, and who has it?"
Two flavors of encryption matter in practice:
One key encrypts and decrypts. If you have the key, you can do both directions. AES (Advanced Encryption Standard) is the canonical example. AES-256-GCM is what Zippd uses for file contents.
Pros: fast, simple, well-understood.
Cons: how do you share the key? If you send it alongside the file, anyone who intercepts both wins.
Two keys: a public key (you can share it freely) and a private key (you keep secret). Anyone with your public key can encrypt a message that only your private key can decrypt. RSA and elliptic-curve crypto (ECC) are the canonical examples.
Pros: solves the key-sharing problem — no shared secret needed up front.
Cons: slow, complex, only practical for small data (or for exchanging symmetric keys).
Most modern systems use both: asymmetric crypto to securely exchange a symmetric key, then symmetric crypto for the bulk data. HTTPS does this. So does Signal. So does PGP. The slow asymmetric step happens once; the fast symmetric crypto handles the actual content.
Zippd skips the asymmetric step because the symmetric key gets transported in a different channel: the URL fragment, hand-delivered through whatever messaging app the sender uses. The recipient's browser reads the URL, extracts the key, decrypts. No public-key dance needed.
Step by step (using AES-256-GCM as the example):
Decryption is the same process in reverse. Same key, same procedure, plaintext comes out. Different key, garbage comes out (or the authentication fails).
A 256-bit key has 2^256 possible values. That's roughly 10^77 — about the number of atoms in the observable universe.
To brute-force it, you'd have to try keys until one worked. Even if you could test a trillion keys per second on every computer ever built, the heat death of the universe would arrive long before you finished. AES-256 is, in practice, unbreakable by brute force. More on AES specifically.
This is the most important practical takeaway: AES-256 is a strong algorithm regardless of who runs it. The strength of any encrypted system depends on where the algorithm runs and who holds the keys.
Browser-side encryption is what makes the system "zero-knowledge." The algorithm doesn't change. The architecture does.
Encryption is only as good as the randomness of the key. If a "random" key is actually predictable, the encryption collapses.
Browsers expose crypto.getRandomValues(), which provides cryptographically-secure random bytes from the operating system. This is the right primitive. Anything that derives a key from a password without sufficient stretching (PBKDF2, scrypt, Argon2) is suspect.
Even perfect encryption leaves things visible:
The math is easy. The protocol design around it is hard. Most encryption failures come from how keys are generated, stored, or transported — not from the cipher itself.
For AES-256, no — Grover's algorithm only halves the effective key length, making it AES-128-equivalent, which is still unbreakable. Asymmetric crypto (RSA, ECC) is much more quantum-vulnerable.
On modern hardware, no. AES-NI instructions run encryption at multiple gigabytes per second.
Check that the encryption happens in your browser (open DevTools, watch the Network tab — outgoing data should be random-looking ciphertext). Check that share URLs have a key fragment after #. Full guide here.
The homepage upload flow is a working demo of everything described here. Watch the bytes go random in DevTools.
Choosing a service, configuring it right, and avoiding the common mistakes. A non-technica...
A deep-dive into Zippd's system architecture and the choices that remove categories of ris...
Send up to 20 GB encrypted in your browser. No Dropbox subscription. No account at all.
The zero-knowledge file sharing tool you miss. Same browser-side encryption, same URL-frag...