(Learn by Doing, and then Doing again)
Learn by Doing, and then Doing again
Earlier today I was working on another small write up for an upcoming video and during my writing I remembered that my senior year of college I took an independent study on cryptography. It had a focus on number theory and complemented well with my desire to study more computer science based topics. I cannot currently recall the name of the book that we used but I recall that I had an old repository with some code from it.
I did some digging and eventually found it on a old GitHub account of mine. The first couple of assignments were implementing affine and ceaser ciphers. This was pretty fun and also something I had done before. The next part is where things got really interesting.
We started out by ensuring we had a good encryption/decryption scheme. Afterwards, I had to use the techniques and math that we were going over to crack it. Some of this involved prime factorization and a lot of modulo. It was cool to just use math principles to essentially brute force codes. I was learning the math by implementing the algorithms. And I was solidifying the concepts by actually using and breaking some code.
The last commit in that repo was about 4 years ago. I hadn't thought about it since but I noticed something about how I learn. I will continue to revisit topics and things long after I first thought or learned about them. This allows me to apply my newfound experience and knowledge to old problems and concepts to deepen my understanding.
This is how I learn and I am so excited about this cryptography because I did this project in python when I was first getting started. I would love to see how I would tackle some of those same challenges now.
I believe I will be making some posts about cryptography soon......