Real AES-256-GCM encryption with a passphrase, plus twelve classical ciphers and encodings that are not encryption, each stating its keyspace and what breaks it
Initializing in your browser…
Encrypt a file with a password using AES-256-GCM, in a documented format that records everything needed to open it again, and read it back a megabyte at a time
134 printable paper templates - dot grid, graph, isometric, hex, Cornell notes, handwriting guides, planners, calendars, manuscript paper, tablature, game boards and more. True vector PDF, SVG or PNG at any paper size.
Convert text between 17 cases with every rule stated: punctuation is a separator, acronyms survive, accents survive a URL slug, and Title Case follows a style you name (Chicago, AP or APA) rather than an unattributed word list
You need to put a recovery note in a shared document, readable only by someone who has the passphrase.
Input
Plaintext note plus a passphrase
Output
A labelled Base64 block: AES-256-GCM, with the salt, nonce and iteration count carried in its own header.
The passphrase is stretched with PBKDF2-HMAC-SHA256 at 600,000 iterations and the text sealed with authenticated AES-256, so an altered message fails to decrypt rather than returning something wrong, and a wrong passphrase says something different from an altered message. It is the same container this site uses for encrypted files, and this project's tests open a message the page produced with a separate implementation using Node's crypto library. The twelve classical ciphers beside it are labelled toys, because that is what they are.
One method here is real encryption: AES-256-GCM with a passphrase, in the same container this site uses for encrypted files. The other twelve are classical ciphers and reversible encodings, which are not encryption and never were, and each one says on the page exactly what protection it gives and what breaks it. Everything runs in your browser and nothing is uploaded.
The tool is in two halves, and it is worth being clear about which is which.
**The half that is encryption.** Choose AES-256-GCM, type a passphrase, and the text is sealed in a container that carries its own magic bytes, format version, key derivation function and iteration count, cipher, chunk size, salt and nonce prefix, followed by an encrypted metadata block and the encrypted text. Every block authenticates the whole header, so editing the header, reordering, duplicating, dropping or truncating anything makes decryption fail rather than quietly returning something wrong. The passphrase is stretched with PBKDF2-HMAC-SHA256 at 600,000 iterations, which is the OWASP recommendation, so each guess an attacker makes is expensive. The result is Base64 in a labelled block, so it can be pasted into a chat or an email. This is not new code: it is the same container the file encryption tool writes, checked in this project's tests against an independent implementation using Node's own crypto library, in both directions, on every text in the corpus.
The passphrase is reported with TWO estimates, because one alone overstates it. The first is the entropy of a password chosen at random from the characters yours uses, which is an upper bound and not a measurement. The second searches for the cheapest way to guess yours: breach-list entries, common words, keyboard runs, sequences, dates and repeats. What the model could not have known is stated alongside the number.
**The half that is not encryption.** Caesar, ROT13, Atbash, Affine, Vigenere, Rail Fence and XOR are classical ciphers, and Base64, hexadecimal, binary, Morse code and Reverse are encodings with no key at all. Each carries its keyspace where that is a number anyone can count (the affine cipher has 311 keys, fewer than a four digit PIN) and each names what breaks it (Kasiski examination for Vigenere, frequency analysis on each key position for a repeating-key XOR). None of them is labelled anything better than a toy, because none of them is.
They are also implemented over the right units. The transposition ciphers and Reverse move CHARACTERS as a reader sees them, so an emoji or a flag survives instead of being cut in half. XOR works on the UTF-8 bytes, which is its definition, and hands back Base64 or hexadecimal, because raw XOR output is not text: it holds characters that cannot be seen, retyped or put in a URL. Hexadecimal and binary write the UTF-8 bytes, so "eight bits per byte" means that. Morse code says which characters it has no symbol for rather than passing them through and destroying them, and says that case cannot survive, because Morse has none.
An affine multiplier that is not coprime with 26 has no inverse, so nothing encrypted with it can ever be decrypted. Those are refused, including when they arrive in a shared link rather than through the control on the page.
Encrypt a note with a passphrase and paste the block into a chat. Only someone with the passphrase can read it, and if the block is altered on the way the decryption fails rather than returning something wrong.
Watch Caesar, Vigenere, Affine and Rail Fence transform a message, with each one saying what its keyspace is and how it falls.
Encode clues with ROT13, Atbash, Morse or Base64, or decode a message you have been handed.
Convert text to and from Base64, hexadecimal or binary, over the real UTF-8 bytes, for transport or inspection.
Yes, and it is checked rather than asserted. In this project's tests a message the running page produced is taken off the screen and opened by a completely separate implementation using Node's crypto library, given nothing but the passphrase and the written format, on every text in the corpus; and the page reads back what that implementation wrote. Its strength is the strength of your passphrase and nothing else.
No, and none of them is labelled as though it were. The affine cipher has 311 keys. Caesar has 25. Vigenere falls to Kasiski examination and the index of coincidence. A repeating-key XOR falls to frequency analysis on each key position. Each method says so on the page.
An encoding (Base64, hexadecimal, binary, Morse, Reverse) has no key, so anyone can reverse it instantly; it offers no secrecy at all and is labelled that way. A cipher has a key, but the classical ones here have keys small enough or structures weak enough to break by hand.
Because XOR works on bytes, and bytes are not text. Handed back raw, the output holds characters that are invisible on screen, cannot be retyped and do not survive a URL. Base64 and hexadecimal both write those bytes down exactly, and the round trip is exact.
Because the multiplier has to be coprime with 26 for the cipher to have an inverse. With any other, encryption still produces something, and it can never be decrypted. Only the twelve legal multipliers are offered, and a link carrying an illegal one is refused rather than honoured.
No. Everything happens in your browser, and the text is deliberately kept out of the URL so a shared link never carries it.
Your text is processed locally in the browser. Nothing you paste or open is transmitted or logged.