I’ll admit, today was a “research day”. In my academic experience, these are the days that you set aside telling yourself that you are going to read those ten chapters or find the dozen or so papers related to your work you’ve been meaning to peruse. When the day comes, you start your work, finally happy to have a day to yourself to think, plan, etc. But then you check your email. And Tumblr. And how long has it been since you played a Steam game...?
Yeah. It was one of those days.
But in the times between me goofing off, I did manage to squeak out some work, namely on my small Encryption program. Thus far I’ve added a Caesar encryption that is hard coded to shift two to the right (I’m still trying to find a dynamic way to do this - any ideas?) and a Transposition cipher that reverses the input. I did clean up the “UI” a little bit (it’s kind of a menu) and created the framework for future additions, and standardized my input method.
The research part came in when I decided to add Public Key Cryptography (PKC) as an option. Having first heard about this years ago from Cory Doctorow’s book Little Brother, I’ve since found the concept fascinating and wanted to try and include it here.
The theory is very simple. Two people (Bob and Alice) want to communicate privately. With PKC each person has a private key only they know and a public key that is broadcast to the world. So if Bob wants to send Alice a message, he encrypts it with her public key and only her private key can unlock it, and vice versa. And if you want to guarantee authenticity, Bob could encrypt it with his private key (that only he has access to) and Alice could decrypt it with his public key - a signature of sorts.
The complication comes with the keys themselves - they are generated mathematically and the “how” of that process is rather difficult to understand. (At least, I’m still trying to make sense of it.) At the moment I’m considering just showing the idea of PKC using passwords, but I would really like to make a small but actually functioning version.
Outside of these, today was a pretty quiet day. I had a small meeting regarding the WW project, but we seem to be a tad stalled deciding on a standard JSON format to use, among other things. Ah well, such is life when you’re working on a large project with people at various skill levels. Hopefully the stall will end soon and I can start getting my hands dirty.