File integrity with MD5 Hashes on Linux

I have talked a few times about the usefullness of hashing programs. They are central to password security and encryption; which most internet users use on a daily basis (most of the times transparently). Another helpful use of hashing can be for checking file integrity. By comparing two hashes of a file, you can tell if that file was modified (even 1 bit) between the time of those two hashes.

If you are on linux, you probably have the program/command md5sum builtin. By piping some text to md5sum, you can calculate a md5 hash of it:

$ echo -n "Hello" | md5sum
> 8b1a9953c4611296a827abf8c47804d7

But md5sum is especially useful for checking whole files like so:

$ md5sum file1.txt file2.doc file3.iso file4.mp3
> e42e2699cda3405fe484f951836d5f5a  file1.txt
> 0692b01aeca5db59c762ad7d16bc0d35  file2.doc
> 01c3ec3dd8e601c81d7fca5151f415ae  file3.iso
> 7bf30953798adad01dc413da8ce5252c  file4.mp3

Running the command in this way simply prints the output to the terminal. If you save the output to a file, you can use md5sum to compare the file hashes later on using the ––check/–c flag like so:

$ md5sum file1.txt file2.doc file3.iso file4.mp3 > integrity_hashes.md5
$ md5sum -c integrity_hashes.md5
> file1.txt: OK
> file2.doc: OK
> file3.iso: OK
> file4.mp3: OK

If you modify one of files and run this integrity check, md5sum will output a FAILED message beside the filename instead of an OK.

Things like this are why I love Linux. I was just thinking one day, “I wonder what the easiest way to calculate hashes of my files is”, and a quick google search showed me that I have the handy md5sum tool already builtin and it does exactly what I want.

Linux FTW!!!

File integrity with MD5 Hashes on Linux

Password Security with Bcrypt

Hashing is using a one-way function to take a variable length input and generate a fixed length output. The same input produces the same output, while slightly different inputs produce very different outputs. Hashing is used in various situations such as encryption, checksums, and digital signatures. An important feature of hashing algorithms is that the input must be impossible to derive from the output. This is why hashing is a one-way function. This article is about using the OpenBSD Blowfish password hashing code (BCrypt) for securing passwords against cracking.

Continue reading “Password Security with Bcrypt”

Password Security with Bcrypt