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 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 FreeBSD pseudocode for this algorithm is: s = sum of all bytes; r = s % 2^16 + (s % 2^32) / 2^16; cksum = (r % 2^16) + r / 2^16; The last part folds the value into 16 bits. ==References==