Hiding Information in the Order of Letters

Capto ille tamen te.

Can the letters be scrambled without affecting readability? One blog writes, "Aoccdrnig to a rscheearch at an Elingsh uinervtisy, it deosn't mttaer in waht oredr the ltteers in a wrod are, the olny iprmoetnt tihng is taht frist and lsat ltteer is at the rghit pclae. The rset can be a toatl mses and you can sitll raed it wouthit porbelm. Tihs is bcuseae we do not raed ervey lteter by it slef but the wrod as a wlohe. "

Can the order of these letters carry a message? Sure. In order to experiment with using this for steganography, I took the source code from my disco lists project and adapted it to handle words. The webpage explains how the order of items in any set can carry a message. Some have used it to order the colors in a palette of a picture, I used it to scramble a list of songs, but it can also work with the letters. All you have to do is set aside the first and last letters as well as any duplicates.

You can try the example out below if your webbrowser supports Java. (Download the plugin here.) The code is available here and protected by the LGPL. It's still alpha code so I would appreciate any bug reports. Please let me know what you think.

Some random thoughts:

  • One note on this blog suggested that readability is helped if the letters aren't moved too far. Alas, this scheme scrambles all interior letters. Bandwidth would suffer if we could only do transpositions.
  • I believe this scheme is pretty secure. If you use a long password, it should be as secure as the MD-5 hash function used to "encrypt" the data.
  • This scheme also foils keyword searches.
  • This might be an effective way to watermark text content. A few words here and a few words there would add up to quite a few bits pretty quickly.
  • There are plenty of debugging and documentary messages if you open up the Java Console.
  • The message is converted into upper case letters and then compressed to squeeze a longer message.
  • The stuff about the number of bits in the message or the message as a BigInteger isn't that important here. It's left over from the disco songs example.
  • To use, choose a random password, type in your hidden message, add some cover text, and push "Encode by scrambling list". The same message should reappear if you push "Decode by Unscrambling List."
  • The sample cover text is from Poe's "Purloined Letter." It may be too ornate for modern eyes. I may want to try something with modern English.

Your browser doesn't recognize Java applets. Get one that does.

Zircon - This is a contributing Drupal Theme
Design by WeebPal.