Steve Friedl of unixwiz.net has a very good article explaining cryptographic hashes.