If you're dealing with small file then MD5 will be good. The problem is that these files are 12 -18MB each and I have no control on them (someone else is maintaining these files for us). Grabbing 18 MB file from the internet each time sounds like a bad idea to me - doing HTTP HEAD (I call it "giving HEAD" :-)) is more reasonable and faster.