Symmetric Crypto

Encrypt or decrypt text with AES, DES or TripleDES using a password.

Ad space — place your AdSense unit here after approval.
Security note: DES and TripleDES are legacy algorithms. Prefer AES for new uses, and protect your password.

Symmetric Crypto online

Encrypt and decrypt text with a passphrase, using AES in the OpenSSL-compatible format provided by CryptoJS — for quick, casual protection of a note or a value you are moving by hand.

Quick answer: Choose AES, DES or TripleDES, enter a password and encrypt or decrypt the text.

How to use this tool

  1. Choose Encrypt, type or paste the text, and set a passphrase you can reproduce exactly.
  2. Run it and copy the Base64 ciphertext (it begins with U2FsdGVkX1 — the "Salted__" marker).
  3. To decrypt, paste the ciphertext, enter the same passphrase, and run Decrypt.

Common uses

Protecting a note before pasting it into a shared document, sending a value through a channel you do not fully trust, prototyping passphrase-based encryption for an app, and producing ciphertext that command-line OpenSSL can also open.

How it works

The page loads CryptoJS and uses its passphrase mode: a random salt is generated per encryption, the key and IV are derived from passphrase plus salt with the EVP_BytesToKey function, and the text is encrypted with AES-256 in CBC mode with PKCS7 padding. The output is Base64 beginning U2FsdGVkX1 — Base64 for "Salted__" — the same format openssl enc -aes-256-cbc produces, so results interoperate with OpenSSL using the matching digest settings. A fresh salt means encrypting the same text twice gives different ciphertext.

Worked example

Encrypt the text Meet at the north gate with the passphrase correct horse battery staple and you get a Base64 block starting U2FsdGVkX1+... that reveals neither the message nor its exact length (padding rounds it to a 16-byte boundary). Send the block through any channel; the recipient pastes it here, enters the same passphrase, and reads the note. A wrong passphrase does not produce a wrong message politely — padding fails and the tool reports it cannot decrypt.

Privacy and browser processing

Encryption runs entirely in your browser via CryptoJS — your text and passphrase are never uploaded.

Frequently asked questions

How strong is this encryption?

The cipher (AES-256) is strong; the weak link is the passphrase and its derivation. EVP_BytesToKey with MD5 is fast, so brute-forcing a weak passphrase is cheap for an attacker. Use a long, unique passphrase (four-plus random words), and treat this as casual protection — for serious secrets use a vetted tool with a modern KDF (age, VeraCrypt, a password manager's sharing).

Can OpenSSL decrypt what I encrypt here?

Yes — the format is the OpenSSL salted format. Use openssl enc -d -aes-256-cbc with the same passphrase; note newer OpenSSL defaults to SHA-256 for the KDF digest while CryptoJS uses MD5, so pass -md md5 for compatibility.

Why is the ciphertext different every time?

A random 8-byte salt per encryption changes the derived key and IV, so identical plaintext encrypts differently each run. That is correct behaviour — it prevents attackers from spotting repeated messages.

I lost the passphrase. Can the text be recovered?

No. There is no backdoor or reset: without the exact passphrase the ciphertext is computationally indistinguishable from random. Store passphrases in a password manager.

Is my text or passphrase uploaded?

No. CryptoJS runs entirely in your browser; the text and passphrase never leave the page. The CryptoJS library file itself is loaded from a public CDN, as with any web tool.

Related tools

Ad space