I wanted to give a shoutout to one of my favorite tools that I’ve been using for the last few years: SmartGit.
SmartGit is a GUI interface to the Git version control system. (I assume that Git itself needs no introduction, but if you’re not familiar with it: It’s one of the best version control systems used in software development.) Actually, the full name of the software is SmartGit/HG, because it’s also able to handle Mercurial repositories.
Lately there’s been a lot of discussion about whether Python 3 is working out or not, with many projects reluctant to move to Python 3, especially big, mature projects that are in the “if it’s not broken don’t touch it” phase.
I still fully believe in Python 3, but this blog post is not about discussing 2-vs-3; I’d like to make my own modest contribution to the Python 3 cause by sharing with you my method of supporting both Python 2 and Python 3 which I use in my open-source project
When I originally read about the different ways to support both Python 2 and 3, I was appalled. There seemed to be 3 ways, and all 3 had properties that made me not want to even consider them.
I’m a bit disappointed that no one managed to solve my homebrew encryption challenge.
I’m now offering a modest prize of $50 to the first person to solve it, and deliver the plaintext. Contest rules are in the original post.
I’m also hoping that the winner will produce a write-up of how he figured it out, but that’s not mandatory in order to win the prize money.
Fine print: I maintain sole discretion to decide who is the legitimate winner, if any, and how to transfer the money. (Probably PayPal.)
(UPDATE: THE ENCRYPTION REMAINS UNBROKEN! I’m still waiting for the first hacker to figure out the algorithm and complete the challenge.)
There is a wide consensus among security experts that when choosing an encryption algorithm, it’s much better to choose a well-known public algorithm rather than a homebrew one. I completely agree with this approach.
However, I am curious about how easy it is to break a weak, homebrew encryption algorithm. When you’re faced with a seemingly-random piece of data, a bunch of ones and zeros that you have absolutely no context for, and you are only told that it is encrypted with no clue as to how the encryption algorithm works, how would you even know where to start at decrypting it?
To shed some light on this mystery, I’ve decided to do a little experiment here on my blog.
I’m challenging you to break a homebrew encryption algorithm that I’ve written.
Page 1 of 6