A Thinkful capstone project to demonstrate facility with a range of Javascript functions.
Thinkful provided HTML for the front end, and a series of requirements for the functions.
They should be able to encrypt and decrypt a message in three different ways: using a Caesar cipher of any length, a standard Polybius square, or a substitution cipher, based on a user provided alphabet.
Additionally, inputs that would not lead to a successful en/decryption (such as cipher alphabet without 26 characters or a Polybius message with an odd number of digits) would return an error.
The three functions use a variety of helper functions and cipher dictionary created on use. For the Casear and Polybius ciphers, a different, more economical solution that didn't use an entire encryption dictionary might be possible.
The app works as intended, and has actually been used by my gaming group for some decryption. If I were to expand the project, I would consider both additional ciphers (a Bacon cipher would be easy to develop) as well as improvements to the Thinkful provided UI.