If you read about modern encryption you'll keep meeting two names: AES-GCM and ChaCha20-Poly1305 (and its extended-nonce sibling, XChaCha20-Poly1305). Both are excellent. The differences are practical, not "one is broken".
What they have in common
Both are AEAD ciphers: authenticated encryption with associated data. They don't just scramble data; they also add a tag that proves it hasn't been changed. Flip one bit of the ciphertext and decryption fails loudly instead of returning garbage. They can also bind extra, unencrypted context (such as an item's id) to the ciphertext, so encrypted data can't be swapped between places without detection.
The real differences
| AES-256-GCM | XChaCha20-Poly1305 | |
|---|---|---|
| Speed with hardware AES (most desktops and phones) | Very fast | Fast |
| Speed without hardware AES | Slower, and harder to make side-channel safe | Fast and constant-time in software |
| Nonce size | 96 bits | 192 bits |
| Safe to pick nonces at random | Only for a limited number of messages per key | Yes, practically without limit |
Why nonce size matters
Every encryption needs a nonce, a number that must never repeat with the same key. With AES-GCM's 96-bit nonce, picking nonces at random becomes risky after billions of encryptions under one key, and a repeat can leak information and even allow forgeries. Systems avoid this with counters, which are easy to get wrong across devices that sync.
XChaCha20's 192-bit nonce is so large that random nonces are safe for any realistic amount of data. For a vault that encrypts on many devices at once, that removes a whole class of mistakes.
What Potent Cipher uses
- XChaCha20-Poly1305 for every secret, with a random 24-byte nonce each time.
- The item's id, vault and format version as associated data, so a server can't swap one item's ciphertext for another's.
- A chunked streaming construction for files, so reordering or cutting a file short is detected.
All of it comes from audited RustCrypto implementations compiled to WebAssembly in your browser and natively in the desktop app. Nothing is home-made. The details are in the .pcipher specification and the open-source core.
Bottom line
Either cipher, used correctly, keeps your data safe. The words to look for on any security page are authenticated encryption and unique nonces, done on your device. Our security page shows how ours fits together.