Encrypt secrets into QR codes, decrypt with password
โณ Loading WASM crypto module...
๐ฏ What this demo shows: Secure air-gap file transfer using QR codes. Encrypt on one device, photograph the QR, decrypt on another device.
๐ Secretโ๐ Encryptโ๐ฑ QR Codeโ๐ธ Photoโ๐ค Uploadโ๐ Passwordโโจ Reveal!
๐ก All crypto happens client-side. The QR code itself is encrypted โ safe to share anywhere.
โ ๏ธ Higher = slower but stronger. Applies to all modes.
1
๐ฌ Animated QR Reveal
Watch the cat video while your secret is encrypted. The QR code slowly fades in behind the video, and when the video ends the encrypted QR code is fully revealed.
Technical: Animated QR Reveal uses the same password-based cryptography as Standard mode: Argon2id derives the symmetric key, AES-256-GCM encrypts the message or file, and the resulting MEOW: payload is rendered as a QR. The animation only changes presentation; it does not change the ciphertext format.
๐ Or Upload File
Enter a message and click Encrypt & Play
2
๐ Decrypt
After the QR code is revealed, paste the payload below (or scan the QR) and enter the password to decrypt.
1
๐ Generate Your Key Pair
Forward secrecy uses X25519 ephemeral keys. Each message uses a unique key that's destroyed after use โ even if your long-term key is compromised, past messages remain safe.
Technical: This mode uses a recipient X25519 key pair and creates a fresh ephemeral X25519 sender key for each message. The shared secret is derived inside WASM and packaged in an FS: envelope; an optional password can add an extra symmetric gate, but the core confidentiality comes from the one-time ECDH exchange.
Your Public Key:
Share this public key with anyone who wants to send you encrypted messages.
2
๐ค Encrypt with Forward Secrecy
Enter the recipient's public key and your message. An ephemeral key is generated for each encryption.
Show password
3
๐ฆ Encrypted Message
This contains an ephemeral public key + encrypted data. Share via QR or copy the payload.
4
๐ฅ Decrypt Forward Secrecy Message
Upload a QR code image or paste an encrypted payload to decrypt using your private key.
๐ธ
Upload QR Code Image
Take a photo of the Forward Secrecy QR code and upload it here
โ or paste payload directly โ
Show password
1
๐ฎ Generate Post-Quantum Key Pair
Hybrid X25519 + ML-KEM-1024 encryption. Secure against both classical computers AND future quantum computers. This is NIST's newly standardized post-quantum algorithm!
Technical: Post-Quantum mode is a hybrid KEM: it combines X25519 with ML-KEM-1024 so the receiver must possess both private keys to recover the shared secret. The derived secret protects the message in a HYBRID-PQ: payload, and an optional password can add a second symmetric check on top of the hybrid key exchange.
๐ก๏ธ Why Post-Quantum?
Standard encryption (RSA, ECDH) will be broken by quantum computers. ML-KEM-1024 uses lattice-based math that remains secure. We combine it with X25519 for hybrid security โ safe even if one algorithm fails.
โ ๏ธ Post-Quantum Not Available
This build of Meow Decoder was compiled without ML-KEM support. Rebuild with --features wasm-pq to enable.
Your X25519 Public Key (32 bytes):
Your ML-KEM-1024 Public Key (1568 bytes):
Share BOTH public keys with anyone who wants to send you quantum-resistant encrypted messages.
2
๐ค Encrypt with Post-Quantum
Show password
3
๐ฅ Decrypt Post-Quantum Message
Upload a QR code image or paste an encrypted PQ payload and use your private keys to decrypt.
๐ธ
Upload QR Code Image
Take a photo of the Post-Quantum QR code and upload it here
โ or paste payload directly โ
Show password
๐น
๐น Live Webcam QR Scanner
Use your camera to scan a QR code generated by one of the encryption modes in this app, then decrypt it here.
Technical: Webcam mode does no encryption of its own. It scans QR payloads, identifies their prefix such as MEOW:, FS:, HYBRID-PQ:, DURESS:, or QUANTUM:, and dispatches to the matching decryptor. The security properties come entirely from the originating mode.
Which tabs generate scannable QR codes?
๐ Standard โ Encrypts a message or file and shows a MEOW: QR code
๐ Forward Secrecy โ Encrypts with ephemeral keys, shows an FS: QR code
๐ฑ Schrรถdinger โ Dual-secret encryption, shows a QUANTUM: QR code
๐ฎ Post-Quantum โ ML-KEM hybrid encryption with its own QR output
๐จ Duress โ Duress-tagged encryption, shows a DURESS: QR code
Encrypt something in one of those tabs first, then point your camera at the resulting QR code to scan and decrypt it here.
๐ท Click Start to enable camera
Camera not started
Show password
1
๐จ Encrypt with Panic Password
Encrypt a secret message with two passwords: a real password for decryption, and a panic password that shows fake decoy content and wipes stored keys.
Technical: Duress mode keeps the real secret under the normal password-based encryption path, then adds a duress tag derived from the panic password plus decoy metadata. Real password input follows the ordinary decrypt path; panic password input authenticates the decoy path and triggers key wiping; wrong passwords should remain indistinguishable from normal failure.
โ ๏ธ How Duress Mode Works:
Encrypts your real secret with the real password
Embeds a duress tag (HMAC) keyed by the panic password
Generates a QR code containing the encrypted payload
Real password โ decrypts normally, reveals the secret
This QR code contains your encrypted message plus an embedded duress tag. The panic password triggers decoy mode โ indistinguishable from a normal failure to an attacker.
๐จ Red border = Duress Mode
โฌ๏ธ Try decrypting below with the real password or the panic password
3
๐ Decrypt (Duress-Aware)
Enter a password to decrypt. The real password reveals the secret. The panic password shows the decoy and wipes keys. Try both!
1
๐งถ Cat Animated Mode: Watch the QR Code Being Crocheted!
The cat crochets your encrypted QR code row by row, right before your eyes. A mesmerizing way to see encryption in action!
Crocheting...
2
๐ฅ Decode Cat Animated QR
Upload a photo or screenshot of the crocheted QR code to decrypt the message.
๐ธ
Upload QR Code Image
Take a photo of the crocheted QR code and upload it here
โ or paste payload directly โ
Show password
1
๐บ Cat Mode: Optical Data Transmission
Transmit encrypted messages through the cat's blinking eyes! Each eye carries a separate bit โ left eye and right eye blink independently for 2ร speed. Green = 1, dark = 0.
๐ Transport + Encryption used here: password-based AES-256-GCM with Argon2id key derivation. Cat Mode is only the optical transport layer for the encrypted payload. It uses the selected security preset and does not add forward secrecy or post-quantum encryption.
๐ก Note: The green flashing in the eye regions during transmission is intentional โ that's the binary data being transmitted! Left eye = even bits, right eye = odd bits. 2 bits per blink interval.
On phones, use fullscreen before transmitting so the cat stays as large as possible for optical capture.
Transmitting...
2
๐น Decode from Video
Upload a video recording of the blinking cat eyes. The decoder analyzes each frame to detect green (1) or dark (0) eye states and reconstructs the binary message.
โ ๏ธ Video Recording Tips
Record at 720p or 1080p (not 4K) โ high-resolution videos cause severe frame drops during analysis
Keep phone steady and eyes in center of frame
Good lighting - not too bright or dark
Record ~30-60fps if possible
๐น
Upload Cat Video
Record the blinking eyes with your phone, then upload here
Show password
Use "Auto" if unsure โ it finds the best threshold automatically
Analyzing frames...
๐ Live Decode Metrics
๐ Locked
Frames:0
Confident:0%
Transitions:0
Bits:0
CRC Pass:0
CRC Fail:0
Session:-
Threshold:0.0
Wrong Session:0
3
๐ Manual Decode
Alternative: If video analysis doesn't work, manually count the blinks and enter the binary pattern here.
Show password
๐ก "Di-dah-dit, dah-di-dah..." โ In loving memory of Dad, who learned Morse code when he served in the Navy. He taught that messages can travel through light, sound, and the spaces between.
โ He knew Morse code by heart. Love you, Dad. Miss you always. ๐
1
Create Encrypted QR Code
Enter your secret message or upload a file, then add a password. The data will be encrypted and encoded into a QR code (or animated GIF for larger files).
๐
Upload File (Optional)
Encrypt any file up to ~2KB (larger files will use animated GIF)
โ or enter text message โ
2
Your Encrypted QR Code
This QR code contains your encrypted message. Share it anywhere โ only someone with the password can read it!
โฌ๏ธ Now try decrypting it below with the password
3
Decrypt the Message
Upload a photo of the QR code, or paste the encrypted payload. Enter the password to reveal the hidden message!
๐ธ
Upload QR Code Image
Take a photo of the QR code on your phone and upload it here
โ or paste payload directly โ
โจ Decrypted Message
1
๐ฑ Schrรถdinger's Encryption
Quantum plausible deniability: encode two completely separate secrets with two different passwords into a single QR code. Each password reveals only its reality โ the other secret is cryptographically indistinguishable from random noise. Neither can be proven to exist without the correct password. Uses AES-256-GCM with Argon2id key derivation.
๐ข Reality A (Real Secret)
๐ Reality B (Decoy Secret)
โ๏ธ Both secrets occupy the same QR code in superposition. The password "collapses" to one reality.
2
๐ฑ Quantum QR Code
This single QR code contains both secrets in superposition, interleaved and independently encrypted. Without the correct password, neither reality can be distinguished from random data.
โ๏ธ Purple border = Schrรถdinger Mode
3
๐ Collapse the Superposition
Enter a password to "observe" one reality. Try both passwords to see different messages emerge!
โ๏ธ Reality Collapsed
1
๐ผ๏ธ LSB Steganography
Hide your AES-256-GCM encrypted secret invisibly in the pixels of any image using Least Significant Bit encoding. The output image is visually identical to the original โ only someone with the password can extract the hidden message. Use PNG format; JPEG compression destroys LSB data.
2
๐ผ๏ธ Stego Image (Invisible!)
This image is visually identical to the original but contains your AES-256-GCM encrypted secret hidden in the pixel LSBs. Save as PNG to preserve the hidden data.
3
๐ Extract Hidden Secret
Upload a stego image (must be PNG - JPEG compression destroys LSB data) and enter the password.