In Dan Brown's Digital Fortress (see my review), the plot centered on the fact of the NSA having a secret massive super-computer that could try every possible combination of even very large digital keys in a matter of minutes, and thus crack any code. While it's mathematically true that any clear-text message encoded using public key encryption could eventually be cracked given enough time, that presupposes that you started with a clear-text message. In the universe of Digital Fortress, the super-computer (called "Translator") tries every possible key until it finds one that results in clear-text. Presumably it recognizes clear text by doing a dictionary check and looking for recognizable words (which, being a massive super-computer, it could also do very quickly). But what if the originally encrypted content wasn't "clear"? Suppose I had a message I didn't want anyone, including the NSA, to see. I could simply write the message in Double-Dutch, then use standard 128-bit public key encryption, and even the mighty Translator wouldn’t be able to crack it, because it wouldn't recognize when it had succeeded. Even when Translator tried the right key, it would read:
which would just look like gibberish, so it would zoom right past it and keep on trying other keys. Brown is aware of this problem, but seems under the misconception that it's very difficult to do.
Technically, Double-Dutch would be a poor choice. The huge preponderance of I's and B's would call attention to themselves and quickly get recognized as noise (even if the cryptographer hadn't learned Double-Dutch in grade school). But you could do something only slightly more complicated, like this:
I took the Double-Dutch algorithm of adding two fill characters before each vowel, but instead of always using "ib", I used letters drawn from another text (e.g., the Bible). Try reading it this way:
This is grade-school simple, and yet it's actually very sophisticated in that it doesn't follow any inherent cycle. The fill characters don't repeat, and their insertion points vary with the original text rather than following any set pattern. This would probably be quite enough to bring Translator to its knees. For good measure, you could compress your input using a program like "zip" before encrypting it.
Alternatively, who says that my "clear text" is even text? I could handwrite my message, scan it to a JPEG image, and then encrypt that. Or I could speak my message and capture the audio in a WAV file, zip it, and then encrypt it. Good luck to Translator trying to figure that out. It doesn't take a supercomputer to generate something that a supercomputer would be unable to solve. It just takes a little creativity.