Could someone explain it in relative layman's terms? How does one generate it or check it? My vague understanding is that it is some sort of digital fingerprint that is unique to every "digital file"?

Basically, you take the raw data file (ones and zeros) and do some math. Each program generates a unique (not really, but unique enough) MD5Sum based on that math. If the program has been tampered with, it will generate a different MD5Sum. There is a very very very slim, but real possibility that two different programs will generate the same MD5Sum, but it's a small enough possibility that it works for checking file security. A crappy example would be two programs and their corresponding data: X: 1010 and Y: 1110, where Y is a slightly modified version of X (what we really want). Maybe it has a virus or other embedded code. The sum for X would be 2, and the sum for Y would be 3, so we can see that X is not the same as Y, therefore Y is not the program we want. Imagine doing this over billions of bits, with more complex math. It's exactly what you said, a digital fingerprint of the program, which tells us if it is what we think it is. As far as generation, there are a few programs out there that will do it for you, and it all depends on your OS, just Google a bit. Checking a sum is simply a comparison. If the sums are the same, then you can be pretty well assured that the files are the same. Read on your own about file hashing and checksums, and it should make some more sense. The wiki on checksum (http://en.wikipedia.org/wiki/Checksum) makes a lot of sense.

Thanks for pointing me to the google page. I did read the wiki article prior to starting the thread. Unfortunately it was a little too technical for me. My limited understanding from the wiki article prompted me to make the statement in the OP that it was some sort of digital fingerprint that is unique to each file. Just wanted a more detailed less technical explanation for it Thank you LtKen for the simple explanation: now makes sense how it comes about.

md5 is known as a hash. hashes in general are one way algorithm that take a lot of information and through a mathematical formula calculate a signature for the input data. Data could be a file, text, a zip file, etc. Hashes are one way algorithms meaning if you have the signature, you can't recreate the original data set. If two different sets of data were to produce the same signature or hash, then a "collision" is said to occur. The strength of a hash is its ability to avoid a collision. Collisions can occur randomly between sets, however others (mathematicians, security black hats, etc), can exploit weaknesses within the hash algorithm that would make a collision occur sooner than would be predicted. md5 is a very common hash algorithm used mainly to verify the integrity of downloaded files. For example if the web site posts the md5 signature of a file its offering for download, and you download the file, you can then calculate the md5 signature of the file you downloaded and compare the two signatures. If the signatures match you can be reasonably certain that the file you received is the exact same content of the file being offered by the original author. Although md5 is commonly used, there are better algorithms in terms of strength such as sha1, sha256, sha512, and some would say ripemd160. Hashes of the sha1 family are commonly used in banking transactions over the web. They take longer to calculate, however the chance of a collision using the sha1 hash is theoretically much less than using md5. I wrote a small primer in regards to the use of hashes and encryption as it relates to gnupg -- which is a program to encrypt email and calculate the emails signature. Its yet just another use of where hashes are used in everyday transactions. Hopefully it might give you some more insight where hash values, or data signatures can be used. (Hint --> think of hashes as the same as verifying data integrity). Advanced GnuPG Concepts - Advanced Key Generation - Ubuntu Forums Hashes are also utilized in programs such as ssh --> secure shell login.