Visual Cryptography
Home | Machine Learning | Crypto | Graphics
Passphrase Generator | Self-Decrypting Email | Visual Crypto | BigInts


This page performs visual cryptography. Enter random keystrokes in the "passphrase" box, type a message in the "message" box, and hit "Make Images". Then print the two windows named "stream" and "ciphertext". Hold the two papers up to a light and align them to see the message, which is also shown in the window named "plaintext". One good way to see the message is to turn off the lights in the room, align the two printouts, and hold them against the computer monitor while displaying something white, such as an empty folder window.
 
PASSPHRASE:

 
  MESSAGE:  
  SPOT SIZE:
1 pixel (illegible)
2 pixels (barely legible, page is 18 lines of 24 characters each)
3 pixels (page is 12 lines of 16 characters each)
6 pixels (page is 6 lines of 8 characters each)
12 pixels (page is 3 lines of 4 characters each)
SPECIAL FONT (must install David Chaum's TrueType font)
     Use darker lines
     Size:

 
   
 
 
If there are spaces at the ends of the lines, or blank lines at the bottom, that will enlarge the pattern that is generated, and slow down the process. The given page sizes are for printing in portrait mode with half-inch margins. The exact size may be different for different browsers and printers. Generating the two new windows may take many minutes for large messages, such as the example message. Always use a different passphrase for each message. I've provided a page that lets you generate a secure passphrase. If you want to send messages to someone with a computer but no crypto software, you can email self-decrypting messages.

If you want, you can remember the passphrase, use a message of all spaces, print out the "stream" window, and give that paper to the recipient. Later, when you have a message to send (with the same number of characters as was used before), you can reenter the same passphrase, enter the message, print out the "Ciphertext" window, and send that to the recipient. The ciphertext page can be decoded using the stream page that was printed earlier.

The "random" dots on the page are generated from the passphrase using an ARCFOUR stream. For more information about ARCFOUR, see section 17.1 of Applied Cryptography, 2nd ed., by Bruce Schneier. He uses the trademarked name for the algorithm, derivable from "ARCFOUR" by dropping the "A" and converting "FOUR" to a digit.