Testing: Beginning Creation, Making Test Programs, Trying Different Algorithms (Week 3)

Mar 11, 2019

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.

4 Replies to “Testing: Beginning Creation, Making Test Programs, Trying Different Algorithms (Week 3)”

  1. Mario G. says:

    What are some Pros and Cons of the different algorithms?

    1. Vidur G. says:

      Hi Mario,

      There’s many factors to choosing algorithms. For example, there is the difference between asymmetric and symmetric encryption (more details about this in previous blog post), speed, security, compatibility, and use case. Excluding theoretical quantum cryptography, all of these algorithms can theoretically be reversed or “hacked” if there is enough processing power.

      For hashing algorithms like MD5 and SHA-256, they are irreversible, meaning you can only make hashes. It is only useful for cases such as checksums or storage of passwords, which you don’t need to reverse ever for checking. Some are old, some are new. For example, MD5 suffers from the “birthday attack”, while SHA-256 is more invincible due to the added bits.

      Others are faster and slower, commutative and not commutative. These algorithms are very diverse!

  2. Arshia S. says:

    Nice progress! What exactly is the blowfish algorithm?

    1. Vidur G. says:

      Hi Arshia,

      Blowfish algorithm is a symmetric-key based encryption algorithm. I am still looking at specifics, but it looks like that might work commutatively to make my project work.

Leave a Reply

Your email address will not be published. Required fields are marked *