The team next to us was working with Morse code, and the loud beeps were so annoying that we couldn't think of an idea... until we thought, why not work with a different kind of code? So we decided to make an app that would encrypt and decrypt messages using a Vigenère Cipher, which was thought to be unbreakable for over 50 years.

How it works

The app has an instructions tab, an encryption tab, and a decryption tab. We created a constant array that contained a complete Vigenère table as well as functions that converted characters to integers and vice versa. Within the encryption page, we simply converted all characters into numbers, followed the rules of a Vigenère cipher, and converted back to letters. We followed the same process for the decryption page, just with slightly different logic in order to perform the Vigenère rules backwards.

Challenges I ran into

While Swift is a great language that can do lots of things that other languages can't, converting characters to integers and back was a challenge. The other problem was the multiple text fields on each page; each was difficult to manage as there was a keyboard to deal with for each one. And, of course, human error and our own mistaken logic did cause some setbacks, but we worked through all of them.

Accomplishments that I'm proud of

We came into hackBCA with EXTREMELY limited knowledge of Swift and Xcode. I, Katie, am very proud of the logic that I wrote by myself that controlled the actual encryption process. I, Timmy, am personally proud of the way I set up the ViewController.

What I learned

We had an amazing mentor, Tom Erdmann, who guided us through the entire process while also letting us learn ourselves. One of the best lessons we learned is to know your limits; we had an entirely different idea until midnight, when we realized our project couldn't succeed, and moved onto ende, a very successful project.

What's next for ende

We'd really like to add a share feature, where users could share their messages directly from the app instead of copying and pasting; it was just not achievable for us today.

Share this project: