Using a checksum command, such as md5sum, sha1sum, fciv (Microsoft) is
just as valid as a binary comparison, if you want to use it. A one bit
change, causes an entirely different checksum with those algorithms,
unlike the poorer quality coverage you would get with the older "sum" command.
One failure I had on my USB key, was a "bad pointer" inside the key. I'd
zeroed the entire drive first, then created a file system and copied a
big file, and the checksum on the big file was wrong. Using a hex editor,
I "walked" through the file for a quick visual check, and found a 128KB
area of all zeros. Which means, one of the previous blocks I'd written,
showed up in the middle of the current file. The problem did not
reoccur. When these storage media use indirection, these kinds of things
can happen. Exactly where that failed information was stored (pointers
to blocks), I have no idea.