SYSV checksum

Short description: Commonly used, legacy checksum algorithm

The SYSV checksum algorithm was a commonly used, legacy checksum algorithm. It has been implemented in UNIX System V and is also available through the sum command line utility.

This algorithm is useless on a security perspective, and is weaker than the CRC-32 cksum for error detection.[1][2]

## 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:[2]

* 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

1. ↑ `sum(1)` — manual pages from GNU coreutils
2. ↑ 2.0 2.1 `sum(1)` – FreeBSD General Commands Manual

## Sources

* official GNU sum manual page
* GNU sum source code

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/SYSV checksum. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=SYSV_checksum&oldid=231022"