## On Substitution Ciphers

One of the first “real” programs I ever wrote would encrypt a message
using a substitution cipher and (more impressively) decrypt an encoded message without knowing the
encryption key. Perhaps the first thing I had to come up with was an algorithm to take a cipher key
that was used to encode a message, and transform it so that it could then be used do decode the
ciphertext back into plaintext. I was aware of ROT-13’s property that if applied once to the
plaintext, and again to the output ciphertext, it would yield the original plaintext. That is,
ROT-13 is its own inverse. However, this is not the case for all possible keys, so I needed to find
a more general algorithm.

Tags