I thought I’d take a little break this week by highlighting one of the personal projects I’ve recently finished.
Several months ago, I read a book on the history & development of encryption. It was fascinating! That book helped me realize that some forms of encryption are actually quite easy to implement, while still being – in comparison – incredibly difficult to break. It was that thought that ultimately inspired me to create LockBox: an Excel spreadsheet for storing encrypted passwords. You can download it from my GitHub page.
Remembering Passwords is Annoying
Ever get frustrated having to remember all your passwords? You’re not alone! Many people have a hard time with it. Unfortunately, some common “solutions” are to use the same password (or slightly different passwords) for multiple accounts.
On top of that, many times the passwords aren’t very secure. Fun fact: the most common password of 2017 was ‘123456’? Not exactly hard to guess!
With LockBox, there’s no need to use the same password over and over, or even use passwords that you could ever possibly remember! It allows this by storing encrypted versions of your passwords. All the encryption is done within the spreadsheet itself, and it never stores the user’s true passwords. The user only needs to remember one key for encrypting and decrypting. It also has the ability to generate random passwords that adhere to user-defined parameters. And all of this is done without the use of macros, so it will even work with Excel Online!
A more comprehensive explanation and walk-through can be found in the file itself, which you can download from my GitHub page.
Under the Hood
Inside the workbook there are a couple of hidden tabs, which you can unhide to see the actual algorithm used for encoding and encrypting. Here’s a quick description of how it works:
The algorithm converts your password into a binary string. At this point, no encryption has occurred.
It then converts the secret key into a binary string as well.
The binary secret key is replicated until it’s the same length as the binary password to be encrypted.
The corresponding digits of the password and key are then combined using binary addition. This is the actual encryption step.
The resulting binary string is then encoded back into an alphanumeric string.
In this way, the password
MyPassword is encrypted into
TTx?doe;0. To get back to the original password, all you have to do is run this process again with the encrypted version – so it’s completely reversible. Nice and easy!
I’m not sure the specific name of the encryption used (I’m not a cryptographer by any means, just a hobbyist), but I believe it’s a type of Nihilist Cipher. If you happen to know the exact name, please let me know!