Skip to main content

Verify MD5 Checksum (Windows, Linux, Mac)

I want to talk a little about MD5's, because every once in a while when downloading a file you might see something like:
MD5: DrunkenTwoYearOldTypingOnAKeyboard
So, let's do some explaining. MD5 is a fingerprint or "message digest" (the actual meaning of MD), AKA checksum, of a file. The MD5 algorithm is intended to provide a digital signature for large files that are compressed, and before they are encrypted with a private (or secret) key. The idea is that if a file has been tampered with, or the download was unsuccessful, you will receive a different MD5 checksum than the original or the one provided is. In short, MD5 is used to verify data's integrity. You can check out the MD5 Wiki HERE if you want more information.

Now, in this post we will look at verifying a MD5 checksum. This could be one that a friend provided you for a file or message, or could be one that was provided with a download (more common). Especially if you are like me and have a tendency to root your phones. It's also nice to verify a MD5 for most larger downloads. This can help to reveal any changes in the download which could signify that the original file was tampered with, the download was incomplete, or someone is attempting a man-in-the-middle attack and has tampered with your download.

Let's get to verifying a MD5. This can be done a couple of ways, and we'll explore them all.

Using OpenSSL (works on anything with it installed)

This method can be done on any system with OpenSSL installed (so, Windows, Linux and MAC). Pull up a command prompt, or terminal. For you Windows folks, if you don't have OpenSSL registered in your environment variables, you will need to go to the OpenSSL Install directory, specifically the "bin" folder. The other two guys (Linux and MAC) just need to open the terminal. Now, enter the following command:
openssl md5 FileName
You'll be given some output in the command prompt/terminal that should match the MD5 that was provided with the file/download.

The Windowz Way 

So, Microsoft has this little utility called the File Checksum Integrity Verifier (FCIV) utility. This (at least with Windows 7) does not come pre-installed on your machine. However, Microsoft has a really nice KB article that goes over the download and install of the utility. This KB can be found HERE, or you can search for "Microsoft KB 841290" in your search engine of choice and the article will come up. Once FCIV has been installed, open a command prompt and enter the following:
FCIV -md5 -sha1 path\FileName
For example, checking a file in your Downloads folder:
FCIV -md5 -sha1 C:\Users\[UserName]\Downloads\FileName 
Alternatively, i recently cam across a handy little utility by Jim Berkes called "md5sums". More information about his program and its download can be found over at pc-tools.net (the direct link is HERE).

The basic instructions are as follows. Either open a command prompt and use the "cd" command to get to the directory of the file or open file explorer, navigate to the file and right click to select "Open Command Window Here". Once you're to the location of the file enter the following:
md5sums.exe C:\path\to\file.txt
Additionally, you could move the "md5sums.exe" file to C:\Windows. You would then be able to execute the command from any location. You could then open a command window in the target file's directory and simply execute:
md5sums file.txt
Linux 

Most Linux distributions come with a command known as 'md5sum'. So, verifying a MD5 is as simple as pulling open a terminal, getting to the directory of your choice, and entering:
md5sum FileName
The OS X Way

OS X, like Linux, comes with a similar command. But because they like to be different, the command is simply 'md5'. So, on our MacBook, pull up a terminal (for those that have never used one, it can either be found by opening Finder > Utilities > Terminal or by doing the 4-finger pinch and searching for it), get to the directory of the file and enter:
md5 FileName

Whatever your method of choice is, if the MD5's don't match, then something fishy is going on... If you just want to play around with MD5, open your favorite text editor and save a blank document. Then (using your chosen method above) get the MD5 checksum. Then do some typing, save the file, and get the MD5 again. Ideally you should see a change in the checksum between the blank and changed document.

Comments

  1. Thanks for taking the time to write this up. Very well done. Much appreciated. Cheers~

    --
    Sam Smith
    Technology Evangelist and Aspiring Chef.
    Large file transfers made easy.
    www.innorix.com/en/DS

    ReplyDelete

Post a Comment

Popular posts from this blog

PowerShell Scripting: Low Disk Space Notification

Update 20150812 You'll see in the below comments that I left a global variable that was not required in the original script. The below post has been updated with that variable removed. Original Post So, I came across a need to have a script that checks the free space of a hard drive, calculates the percentage and send an e-mail notification of the free space is less than 10%. I figured that this could be scripted with PowerShell and run as a scheduled task in Windows. One thing I did find out is that I needed to create a service account in Active Directory with Server Admin permissions. Once you have that account in place simply copy the script below and name it "WhatYouWant.ps1" and set your Windows task accordingly. Disclaimer: I did reach out for assistance with creating this script on StackOverflow. My original script was writing the output to a text file, and copying the contents of that text file into the e-mail notification. This was not acceptable for the long...

PowerShell Scripting: Removing Multiple Directories

Update 20150916 So the pic I used to display the CSV sample went missing. So the latest update just includes a text version of what was displayed. Thanks! Original Post I'm still fairly new to utilizing PowerShell to automate tasks and get big tasks done. But every time I use it, the tool makes my life a whole lot easier. Recently I was tasked with deleting over 500 directories. Thankfully someone else had the task of identifying the directories that were slated to be deleted, I just had to complete the process of removing them. Thanks to a little article from the Scripting Guy! Blog (found HERE ) I had some direction to start in. What I ended up doing is creating a single column CSV file that contains the path to the directories to be deleted. This path includes drive letter, and the overall path to the folder. It should look similar to this: delete C:\Path\to\folder C:\Path\to\folder2 D:\Path\to\folder D:\Path\to\folder2 I named the file "delete.csv" and pla...

Using Python for GPG/PGP File Encryption - Part 1

So, this will be the start of a series that will build a python script for GPG/PGP file encryption. In this post, we'll look at installing gnupg for python and using python to setup the keystore, create a private key, exporting the associated public key, and importing a public key. Now everything done here can be done with simple gnupg commands, but learning how to do this with python will help in understanding the script we'll be building to complete file encryption. I will be covering non-python gnupg commands in a future post. Additionally, the folks at the python-gnupg site over at pythonhosted.org have done a really great job at documenting everything (link to their site at the bottom). The stuff I'll be going over will be more of a start-to-finish for anyone that may get lost in the muck of doing stuff with python. Full Disclosure #1: Any key identifier throughout the series of posts is FICTITIOUS and DOES NOT represent any real key, either associated with myself or...