After a few weeks of intense reading and learning with both my advisor and from my readings, I decided to start coding. Along with reading, it is highly important to also practice, as that is the only way one can see if they have fully understood the topic.
With that in mind, I started implementing common hashing and cipher algorithms. I started off with MD5 and SHA-256 hashing and was able to write a JAVA program that outputs a irreversible hash from a given input. Below is a small diagram about MD-5 which I created in a previous class presentation.
This slide gives a simple and basic understanding of the MD5 algorithm, and SHA-256 is very similar. Looking at this reminded me of my previous research and helped me implement the hashing algorithm from scratch. Although there is no direct use case for hashing algorithms in my project, it is still an indispensable part of password storage, and it may be helpful later on in the project. Implementing them also boosted my understanding of cryptographic algorithms and made me think about them in a more practical level.
Along with that, I started working on creating cipher algorithm implementations, such as for AES-256 (symmetric) and many others. I am still trying to figure out how to work with certificate and key-based asymmetric cryptography. Along with that, I am looking into the Blowfish algorithm and seeing how I can use it commutatively.
For now, I am working on these mini-projects, hoping to bridge them together into a .jar JAVA library that I can use with any application. We will see next week how my progress goes.