## Inspiration

During our brainstorm session, one of the members brought up Bitcoin and how he was interested in investing. Then another member said how we could possible deal with cryptography for the project as it is heavily related to Computer Science and Mathematics. After some discussion and research, we felt that it was an appropriate topic to do our project on considering the spike in interest in cryptocurrency and all members having applied science background. Throughout the process, we realized that learning about cryptography is quite hard as it requires background mainly in Computer Science and Mathematics to fully appreciate and understand it. Fitting to our Education track, we decided to introduce the Caesar Cipher which is not difficult to understand, catered to people from other backgrounds to get eased into the topic and have lower barrier of entry to the cryptography field.

## What it does

We wrote a Python program which demonstrates key parts of the Caesar Cipher. The program has 4 options to choose from - demonstration of modulo, demonstration of encryption and decryption, determining the key number from user's input, and program termination. First option is a modulo function that prompts user to input a numerator value and a denominator value. The function is programmed to return the remainder value. If the numerator is less than the denominator, the function will return the numerator as the remainder. This is vital to the Caesar Cypher as it ensures the result never exceeds the value 26 which corresponds to the last character, 'z', while 0 corresponds to a blank space. The next option demonstrates encryption and decryption. User is prompted to enter a random string value and the key number. The program shifts the index values by the key value. It is shifted to the right if it is a positive input and to the left if it is a negative input. It then encrypts the string, decrypts it back to the original input, and returns both values. The third option demonstrates the calculation of the key value upon user's input. As an example, if the user were to input 'ECPWEMU', it would return all possible strings based on the 26 key values. In this case, we would see key 2 with the corresponding decryption 'CANUCKS', which was the string intended to be encrypted. Finally, the last option is program termination.

## How we built it

We started with a single main file. We built the main file with the method of TDD (Test Driven Development). We first built the test case that we wanted to test and tested out using some general keys and words. After we saw it was working, we then built more general cases and we found out it was working for all the cases. We then started building the header file based on the working test cases. After all the implementations, we ended up with a header file with the 4 options' functions and a main file that implements the functions.

## Challenges we ran into

Coming up with a working program within the 24 hour time limit was the biggest challenge. We were not sure how complex our project had to be and we were unsure if our proposed idea was enough. Ultimately, we concluded that it would be better to have a fully working simpler project rather than risking it with a tougher topic. Another hardship we faced was that not everyone in our team knew about cryptography. Thus we had to make sure to educate ourselves first well before making the necessary materials for better accessibility to cryptography.

## Accomplishments that we're proud of

As mentioned earlier, the hardest part of the project was finishing everything before the deadline. We are extremely proud that we were able to finish everything in time including the video and the website. Every member contributed well in their own ways with similar workload. In addition, everyone lived relatively close each other which allowed us to meet up in person. We felt that meeting up in person would allow us to have better communication to each other and work on the project more efficiently. It felt refreshing to work on a project in person with teammates for the first time in awhile.

## What we learned

Most of us learned cryptography for the first time. We learned how some ciphers worked, especially the Caesar Cipher. We also reinforced our knowledge on Python and markup languages that were used to make the website. Some of us had more experience on certain things and it was a valuable time learning from each other.

## What's next for SAVIOURS

We are looking to work on more complex ciphers in the near future. Our ultimate goal is make a website that contains widely used ciphers and the code implementations of them which can be accessed by anyone on the web. This website will fulfill our initial goal of making cryptography more accessible for people not in the field.