SYSV checksum
The SYSV checksum algorithm is a commonly used, legacy checksum algorithm. It has been implemented in and is also available through the command line utility.
Contents
Newer checksum algorithms
The manual page of the GNU sum utility program (that implements the BSD checksum algorithm) states: “sum is provided for compatibility; the cksum program is preferable in new applications.”
Description of the algorithm
The main part of this algorithm is simply adding up all bytes in a 32-bit sum. As a result, this algorithm has the characteristics (disadvantages and advantages) of a simple sum:
- re-arranging the same bytes in another order (e.g. moving text from one place to another place) does not change the checksum.
- increasing one byte and decreasing another byte by the same amount does not change the checksum.
- adding or removing zero bytes does not change the checksum.
As a result, many common changes to text data are not detected by this method.
The last two lines of the algorithm reduce the total sum to a 16-bit number.
Sources
- official GNU sum manual page
- coreutils download page — find and unpack the newest version of the coreutils package, read src/sum.c