Your encrypted package will appear here, with the IV, salt and key.
A complete cryptography & data-protection toolkit in your browser
Encrypt and decrypt text and files with real, modern cryptography — AES-256-GCM, ChaCha20-Poly1305, RSA-OAEP, Triple-DES, Blowfish and Fernet — using the browser’s Web Crypto API and verified pure-TypeScript implementations. Derive keys from passwords with PBKDF2, scrypt or Argon2id, generate keys, salts and IVs, sign with HMAC, analyze strength and inspect unknown blobs. Everything runs locally — nothing is ever uploaded.
Real AES encryption
AES-128/192/256 in GCM, CBC and CTR modes via the browser’s native Web Crypto API — the same cipher that secures TLS, disks and password managers. AES-GCM gives authenticated encryption out of the box.
RSA public-key encryption
Generate 2048/3072/4096-bit RSA-OAEP key pairs in the browser, encrypt with the public key and decrypt with the private key, import/export PEM & JWK, and see the key fingerprint.
ChaCha20-Poly1305
A from-scratch, RFC 8439-verified implementation of the modern authenticated stream cipher used in TLS 1.3 and WireGuard — fast and constant-time even without AES hardware.
Password-based encryption
Encrypt with a passphrase. A strong key is derived with PBKDF2 (Web Crypto), scrypt (RFC 7914) or memory-hard Argon2id, each with a random salt and tunable cost parameters.
Legacy & Fernet support
Triple-DES and Blowfish for interop with older systems (verified against published test vectors), plus Fernet tokens (AES-128-CBC + HMAC-SHA256) for symmetric, time-stamped messages.
HMAC toolkit
Generate and verify HMAC-SHA256/384/512, HMAC-SHA3-256/512 and HMAC-BLAKE2b/2s for message authentication and webhook signatures.
Key, salt & IV generators
Produce 128–2048-bit keys, cryptographically secure salts and correctly-sized IVs/nonces with the CSPRNG, shown in hex and Base64 with an entropy readout.
Strength analyzer
Every configuration is scored from Weak to Enterprise grade against best practice — algorithm choice, key length, authentication and KDF iterations all factor in.
Cryptographic inspector
Paste any blob and the inspector detects Base64, hex, JWT, PEM, Fernet and our own package format, estimates entropy and tells you whether it looks encrypted.
Password tools
A real entropy-based password strength checker with crack-time estimates and a CSPRNG generator for strong passwords, passphrases, API secrets and session keys.
File & bulk encryption
Encrypt and decrypt files locally — text, JSON, CSV, images and more — and process several at once, with size, type and hash shown for each.
Private by design
All cryptography runs on your device. Plaintext, passwords and keys are never transmitted, logged or stored, and a one-click privacy wipe clears everything from memory.
How to encrypt & decrypt text
Enter your text and pick an algorithm
Type or paste the text to protect (or drop a file) on the left, then choose an algorithm — AES-256-GCM is the recommended default. ChaCha20-Poly1305, AES-CBC/CTR, RSA, Triple-DES, Blowfish and Fernet are all available.
Supply a password or key
Encrypt with a memorable password (a strong key is derived with PBKDF2, scrypt or Argon2id and a random salt) or paste a raw key. Need one? The built-in key, salt and IV generators produce cryptographically secure values instantly.
Encrypt in real time
The ciphertext is produced locally using the Web Crypto API and verified pure-TS ciphers. You get a self-describing, portable package containing the algorithm, IV, salt and ciphertext (and an authentication tag for AEAD modes) — copy it, download it, or create a secure share link.
Decrypt & verify
Paste a package back in, supply the same password or key, and the original text is recovered. Authenticated modes (GCM, ChaCha20-Poly1305, Fernet) detect any tampering and refuse to decrypt modified data. The strength analyzer scores your configuration as you go.
What is encryption?
Encryption is the process of transforming readable data (plaintext) into an unreadable form (ciphertext) using an algorithm and a key, so that only someone with the correct key can turn it back into the original. It is the foundation of digital privacy and security — protecting messages, files, passwords, payments and the entire web.
Unlike encoding (Base64, URL-encoding) which only changes a representation and is trivially reversible by anyone, encryption is designed so that without the key the ciphertext reveals nothing practical about the plaintext. And unlike hashing, which is one-way, encryption is reversible by design: with the key you can always recover the original.
This toolkit performs real encryption entirely in your browser using the Web Crypto API and verified implementations, so you can protect text and files without trusting any server.
How encryption works
A cipher takes the plaintext and a key and produces ciphertext. Modern symmetric ciphers like AES also take a unique, random IV (initialization vector) or nonce for each message, which ensures that encrypting the same text twice produces different ciphertext — a critical property called semantic security.
Authenticated encryption (AEAD) modes such as AES-GCM and ChaCha20-Poly1305 go further: alongside the ciphertext they produce an authentication tag. On decryption the tag is checked, so any tampering with the ciphertext — even a single flipped bit — is detected and decryption fails safely. This protects integrity and authenticity, not just confidentiality.
When you encrypt with a password rather than a raw key, a key-derivation function (KDF) such as PBKDF2, scrypt or Argon2id stretches your password into a full-strength key using a random salt and a deliberately expensive computation, making brute-force guessing far harder.
Symmetric encryption
Symmetric encryption uses a single shared secret key for both encryption and decryption. AES (the Advanced Encryption Standard), ChaCha20, Triple-DES and Blowfish are all symmetric. Symmetric ciphers are extremely fast — modern CPUs encrypt gigabytes per second — which makes them the workhorse for encrypting the actual data.
The challenge with symmetric encryption is key distribution: both parties must somehow share the secret key securely. In practice this is solved with asymmetric cryptography or a key-agreement protocol (like Diffie-Hellman) to exchange the symmetric key, after which the fast symmetric cipher does the bulk work.
Asymmetric (public-key) encryption
Asymmetric encryption uses a mathematically linked pair of keys: a public key that anyone can use to encrypt, and a private key that only the owner holds and uses to decrypt. RSA and elliptic-curve schemes are the best-known examples. Because the encrypting party never needs the secret, public-key cryptography solves the key-distribution problem.
The trade-off is speed and size: RSA is far slower than AES and can only encrypt small amounts of data (a 2048-bit RSA-OAEP key encrypts at most ~190 bytes). So real systems use hybrid encryption — RSA (or ECDH) protects a random symmetric key, and AES encrypts the data with that key.
Public key vs. private key cryptography
In a key pair, the public key is meant to be shared freely; the private key must be kept secret. What one key does, only the other can undo. Encrypt with the public key → only the private key decrypts (confidentiality). Sign with the private key → anyone can verify with the public key (authenticity and integrity).
This asymmetry underpins TLS/HTTPS, SSH, code signing, PGP email and digital certificates. Guarding the private key — ideally in an HSM, secure enclave or a secrets manager — is the single most important operational security task in public-key systems.
Digital signatures & message authentication
A digital signature proves who created a message and that it was not altered. The signer hashes the message and encrypts the hash with their private key; verifiers decrypt it with the public key and compare hashes. RSA, ECDSA and EdDSA are common signature algorithms.
For symmetric settings, a Message Authentication Code (MAC) like HMAC provides the same integrity and authenticity guarantee using a shared secret instead of a key pair. AEAD ciphers build a MAC directly into the encryption (the Poly1305 or GCM tag), which is why authenticated encryption is the modern default.
Encryption vs. encoding
Encoding (Base64, hex, URL-encoding) changes how data is represented so it can travel safely through a channel — it provides no security and anyone can reverse it. Encryption uses a secret key and is designed so that data cannot be recovered without it.
A common mistake is to treat Base64 as “encryption.” It is not: Base64-decoding is a one-line operation. If you need confidentiality, use a real cipher like AES-256-GCM with a strong key — exactly what this tool provides.
Encryption vs. hashing
Hashing is a one-way function: it maps data to a fixed-size digest and cannot be reversed. It is used for integrity checks, fingerprints and — with a slow, salted password-hash like Argon2 or bcrypt — for storing passwords. Encryption is two-way: with the key you recover the original.
Rule of thumb: encrypt data you need to read again (messages, files, tokens); hash data you only need to verify (passwords, checksums, signatures). Never “encrypt” passwords for storage — hash them with a memory-hard algorithm instead.
AES explained
AES (Advanced Encryption Standard, FIPS 197) is the most widely used symmetric block cipher in the world, standardized by NIST in 2001. It operates on 128-bit blocks with 128, 192 or 256-bit keys, and is implemented in hardware (AES-NI) on virtually every modern CPU, making it both extremely fast and trusted.
AES is used in a mode of operation. AES-GCM provides authenticated encryption and is the recommended default. AES-CBC is the classic mode but is unauthenticated and needs a separate HMAC and careful padding handling. AES-CTR turns AES into a stream cipher and is also unauthenticated. Always use a fresh random IV/nonce per message and never reuse a nonce with GCM.
RSA explained
RSA (Rivest–Shamir–Adleman, 1977) is the classic public-key algorithm. Its security rests on the difficulty of factoring the product of two large primes. For encryption, RSA-OAEP padding is used; for signatures, RSA-PSS. A 2048-bit key is the practical minimum today, with 3072-bit recommended for long-term security.
RSA can only encrypt data smaller than its modulus minus padding, so it is used to encrypt symmetric keys, not bulk data. Keep the private key secret and rotate keys periodically. For new systems, elliptic-curve cryptography (ECC) achieves the same security with much smaller keys and faster operations.
ChaCha20 explained
ChaCha20 is a modern stream cipher by Daniel J. Bernstein, paired with the Poly1305 MAC to form the ChaCha20-Poly1305 AEAD construction (RFC 8439). It is a TLS 1.3 standard and is used by WireGuard, OpenSSH and mobile platforms.
Its key advantage is performance and safety in software: ChaCha20 is fast and constant-time without special hardware, which makes it the preferred choice on devices without AES acceleration (many phones and embedded systems). It uses a 256-bit key and a 96-bit nonce that must never repeat for a given key.
Post-quantum cryptography
Large-scale quantum computers would break today’s public-key algorithms (RSA, Diffie-Hellman, ECC) using Shor’s algorithm, while only weakening symmetric ciphers (Grover’s algorithm effectively halves key strength, so AES-256 remains safe). This drives the move to post-quantum cryptography (PQC).
In 2024 NIST standardized the first PQC algorithms: ML-KEM (Kyber) for key encapsulation and ML-DSA (Dilithium) and SLH-DSA (SPHINCS+) for signatures. The pragmatic path today is “harvest-now-decrypt-later” defense: use AES-256 for data at rest and adopt hybrid (classical + PQC) key exchange as libraries mature.
Cryptography comparison center
Side-by-side comparisons to help you choose the right algorithm and key-derivation function for the job.
AES vs RSA
| AES | RSA | |
|---|---|---|
| Type | Symmetric | Asymmetric |
| Keys | One shared secret key | Public + private key pair |
| Speed | Very fast (GB/s, hardware) | Slow (operations/sec) |
| Data size | Any length | Tiny (≤ ~190–446 bytes) |
| Typical use | Encrypting the actual data | Encrypting a key, signatures |
Use both: RSA (or ECDH) to exchange a key, AES to encrypt the data — “hybrid encryption”.
AES vs ChaCha20
| AES-GCM | ChaCha20-Poly1305 | |
|---|---|---|
| Type | Block cipher (AEAD) | Stream cipher (AEAD) |
| Hardware | Fastest with AES-NI | Fastest without AES-NI |
| Timing safety | Needs hardware for constant-time | Constant-time in software |
| Nonce reuse | Catastrophic | Catastrophic |
| Standard | TLS, disk, everywhere | TLS 1.3, mobile, WireGuard |
Both are excellent. Prefer AES-GCM with AES-NI hardware; ChaCha20 on devices without it (mobile).
AES-GCM vs AES-CBC
| AES-GCM | AES-CBC | |
|---|---|---|
| Authentication | Built-in (tamper-proof) | None — needs separate HMAC |
| Padding | None (no padding oracle) | PKCS#7 (padding-oracle risk) |
| Nonce/IV | 96-bit nonce, never reuse | Random 128-bit IV |
| Parallelizable | Yes | Encryption is sequential |
Prefer AES-GCM. Only use CBC for legacy interop, and always encrypt-then-MAC.
RSA vs ECC
| RSA | ECC (Elliptic Curve) | |
|---|---|---|
| Key size for ~128-bit security | 3072-bit | 256-bit |
| Speed | Slower, big keys | Faster, small keys |
| Maturity | Ubiquitous | Modern, widely supported |
| Use | Encryption + signatures | Key exchange + signatures |
ECC gives equivalent security with far smaller keys — prefer it for new designs (e.g. X25519/Ed25519).
PBKDF2 vs Argon2
| PBKDF2 | Argon2 | |
|---|---|---|
| Year / status | 2000, FIPS | 2015, PHC winner |
| Hardness | CPU only | Memory-hard (GPU/ASIC resistant) |
| Tuning | Iterations | Memory + time + parallelism |
| Availability | Everywhere (Web Crypto) | Needs a library/WASM |
Prefer Argon2id for password hashing. Use PBKDF2 (600k+ iters) where Argon2 is unavailable.
Argon2 vs Bcrypt
| Argon2id | bcrypt | |
|---|---|---|
| Memory-hard | Yes (tunable) | No (4 KB fixed) |
| Max password | Unlimited | 72 bytes (truncates) |
| Year | 2015 | 1999 |
| GPU resistance | Strong | Moderate |
Argon2id is the modern recommendation; bcrypt is still acceptable and battle-tested for ≤72-byte passwords.
Developer examples — AES-256-GCM
Production-ready, password-based AES-256-GCM encryption in the languages and runtimes you ship with:
API blueprint
POST /api/encrypt
Content-Type: application/json
{
"algorithm": "AES-256-GCM",
"text": "Hello World",
"password": "Secret123"
}200 OK
{
"alg": "AES-256-GCM",
"kdf": { "name": "PBKDF2", "salt": "…", "iterations": 310000 },
"iv": "base64…",
"ct": "base64…"
}This tool runs entirely client-side, so no data is sent to a server. The shape above is a blueprint for building your own encryption API — and exactly the “crypto package” the tool produces locally.
Security best practices
Key management
Who uses an encryption toolkit?
Protect sensitive notes
Encrypt passwords, recovery codes or private notes before storing them anywhere with a strong passphrase.
Securely share a message
Encrypt a message and send the package over any channel; the recipient decrypts it with the shared password — the channel never sees plaintext.
Encrypt files locally
Protect documents, JSON, CSV or images on your device before uploading them to cloud storage you don’t fully trust.
Test & debug crypto
Verify your backend’s AES/RSA/ChaCha20 output, generate keys/IVs, and check HMAC signatures while building secure features.
Audit configurations
Use the strength analyzer and inspector during code review to catch weak modes, short keys and unauthenticated ciphers.
Learn cryptography
A hands-on way to understand AES, RSA, ChaCha20, KDFs and AEAD for courses, interviews and onboarding.