What is better?
CRC Verse Checksum Verification for USB flash drives
This article does the math and gives examples on which verification method is best.
This post is to give the general user an idea of what verification method is better for writing data to a flash drive. There are reference links at the bottom of this post which dive much deeper into the two methods of verification if this simple overview is not enough.
The short answer is Cyclical Redundancy Check (CRC) is the best method for checking data written to a USB flash drive.
Many believe a checksum is the best method to verify data written to a flash drive (most popular is MD5). I believe this is favored because it is easier to understand how the verification works, and also easier to implement. However, there are flaws in checksum verification and therefore it is not suitable for verification of data written to a flash drive.
What is the difference between Checksum and CRC verification? The checksum method uses addition in its math calculations to check whether all data was written correctly. CRC uses long division in its math calculations to check whether all data was written correctly. It is worth noting I am talking about binary long division, not the school-yard long division you so fondly remember.
Checksum methods will calculate the total bits in a packet of data and include that total checksum amount when the data is sent over communication lines. The receiver will then look at the packet, read the checksum value and then perform the same calculation to make sure everything adds up. The problem is a high probability that somewhere between the sender and receiver the bits of data are changed, corrupted or swapped yet still turn a correct checksum value after calculation on the receiving end.