Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CKSUM(1)		    General Commands Manual		      CKSUM(1)

NAME
       cksum, sum -- display file checksums and	block counts

SYNOPSIS
       cksum [-o 1 | 2 | 3] [file ...]
       sum [file ...]

DESCRIPTION
       The  cksum utility writes to the	standard output	three whitespace sepa-
       rated fields for	each input file.  These	fields are a checksum CRC, the
       total number of octets in the file and the file name.  If no file  name
       is specified, the standard input	is used	and no file name is written.

       The  sum	 utility is identical to the cksum utility, except that	it de-
       faults to using historic	algorithm 1, as	described below.  It  is  pro-
       vided for compatibility only.

       The options are as follows:

       -o      Use historic algorithms instead of the (superior) default one.

	       Algorithm  1  is	 the algorithm used by historic	BSD systems as
	       the sum(1) algorithm and	by historic AT&T System	V UNIX systems
	       as the sum(1) algorithm when using the -r option.   This	 is  a
	       16-bit  checksum,  with	a right	rotation before	each addition;
	       overflow	is discarded.

	       Algorithm 2 is the algorithm used by  historic  AT&T  System  V
	       UNIX systems as the default sum(1) algorithm.  This is a	32-bit
	       checksum, and is	defined	as follows:

		     s = sum of	all bytes;
		     r = s % 2^16 + (s % 2^32) / 2^16;
		     cksum = (r	% 2^16)	+ r / 2^16;

	       Algorithm  3  is	 what is commonly called the `32bit CRC' algo-
	       rithm.  This is a 32-bit	checksum.

	       Both algorithm 1	and 2 write to the standard  output  the  same
	       fields  as  the	default	 algorithm except that the size	of the
	       file in bytes is	replaced with the size of the file in  blocks.
	       For  historic  reasons,	the block size is 1024 for algorithm 1
	       and 512 for algorithm 2.	 Partial blocks	are rounded up.

       The default CRC used is based on	the  polynomial	 used  for  CRC	 error
       checking	 in  the  networking  standard	ISO/IEC	 8802-3:1989.  The CRC
       checksum	encoding is defined by the generating polynomial:

	     G(x) = x^32 + x^26	+ x^23 + x^22 +	x^16 + x^12 +
		  x^11 + x^10 +	x^8 + x^7 + x^5	+ x^4 +	x^2 + x	+ 1

       Mathematically, the CRC value corresponding to a	given file is  defined
       by the following	procedure:

	     The n bits	to be evaluated	are considered to be the coefficients
	     of	a mod 2	polynomial M(x)	of degree n-1.	These n	bits are the
	     bits from the file, with the most significant bit being the most
	     significant bit of	the first octet	of the file and	the last bit
	     being the least significant bit of	the last octet,	padded with
	     zero bits (if necessary) to achieve an integral number of octets,
	     followed by one or	more octets representing the length of the
	     file as a binary value, least significant octet first.  The
	     smallest number of	octets capable of representing this integer
	     are used.

	     M(x) is multiplied	by x^32	(i.e., shifted left 32 bits) and di-
	     vided by G(x) using mod 2 division, producing a remainder R(x) of
	     degree <= 31.

	     The coefficients of R(x) are considered to	be a 32-bit sequence.

	     The bit sequence is complemented and the result is	the CRC.

EXIT STATUS
       The  cksum  and sum utilities exit 0 on success,	and >0 if an error oc-
       curs.

SEE ALSO
       md5(1)

       The default calculation is identical to that given  in  pseudo-code  in
       the following ACM article.

       Dilip  V.  Sarwate,  "Computation of Cyclic Redundancy Checks Via Table
       Lookup",	Communications of the ACM, August 1988.

STANDARDS
       The cksum utility is  expected  to  conform  to	IEEE  Std  1003.2-1992
       ("POSIX.2").

HISTORY
       The cksum utility appeared in 4.4BSD.

FreeBSD	14.3			April 28, 1995			      CKSUM(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=cksum&sektion=1&manpath=FreeBSD+14.3-RELEASE+and+Ports>

home | help