What?
As part of my undergraduate dissertation, I created a fully-functional encryption software that employed multuple cryptographic techniques such as cryptographic hash functions, digital signatures, and password-based key derivation.
As one of the largest solo projects I have undertaken, as it required extensive knowledge of both cryptographic primitives, and the software engineering environment required to facilitate the application of them.
Why?
High-level concepts are sometimes difficult to learn. Imagining them as an evolution of lower-level primitives makes understanding how they work a lot more straightforward. The development of this project yielded many interesting concepts to think about, mainly “How can I ensure complete coverage over the CIA Triad?”. The answer to this is, of course, to think about the applied cryptographic algorithms, and what exactly their purposes are. It is this question that led to the multitude of techniques being applied, as outlined above.
How?
The project was written in Java over the course of two semesters, and required a mixed skillset of software development ability, and computer security knowledge.
Balancing this final year project with on-going semester work required a lot of planning. However, by creating a Work Breakdown Structure, I was able to plan both the implementation and its timetable. This was especially helpful, as creating a fully-functional desktop application demands a considerable knowledge of the usage of the necessary libraries for making a GUI-enabled application.