Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

cksum - write file checksums and sizes

&pagelevel(4)&pagelevel

The cksum utility calculates and writes to standard output a cyclic redundancy check (CRC) for each input file, and also writes to standard output the number of octets in each file. The CRC used is based on the polynomial used for CRC error checking in the referenced Ethernet standard.


Syntax


cksum[ -C][ file ...]

-C

calculates the CRC checksum in the same way as in previous versions.

file

A pathname of a file to be checked. The files may be of any type.

file not specified:
The standard input is used. You must use CTRL+C or @@d to terminate input from standard input.

Encoding

The encoding for the CRC checksum is defined by the generating polynominal:

G(x) = x32+x26+x23+x22+x16+x12+x11      +x +x +x +x +x +x+12

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

  1. 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 is used.

  2. M(x) is multiplied by x32 (that is, shifted left 32 bits) and divided by G(x) using mod 2 division, producing a remainder R(x) of degree <=31.

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

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

Locale

The following environment variables affect the execution of cksum:

LANG

Provide a default value for the internationalization variables that are unset or null. If LANG is unset of null, the corresponding value from the implementation-specific default locale will be used. If any of the internationalization variables contains an invalid setting, the utility will behave as if none of the variables had been defined.

LC_ALL

If set to a non-empty string value, override the values of all the other internationalization variables.

LC_CTYPE

Determine the locale for the interpretation of sequences of bytes of text data as characters (for example, single- as opposed to multi-byte characters in arguments). LC_CTYPE governs character classes, character conversion (shifting) and the behavior of character classes in regular expressions.

LC_MESSAGES

Determine the locale that should be used to affect the format and contents of diagnostic messages written to standard error.

NLSPATH

Determine the location of message catalogs for the processing of LC_MESSAGES.

Stdout (Standard Output)

For each file processed successfully, the cksum utility will write in the following format:

"%u %d %s\n", <ckecksum>, <# of octets>, <pathname>

If no file operand was specified, the pathname and its leading space will be omitted.

Exit status

0All files were processed successfully.
>0An error occurred.

Hint

cksum utility is typically used to quickly compare a suspect file against a trusted version of the same, such as to ensure that files transmitted over noisy media arrive intact. However, this comparison cannot be considered cryptographically secure. The chances of a damaged file producing the same CRC as the original are astronomically small; deliberate deception is difficult, but probably not impossible.

Although input files to cksum can be any type, the results need not be what would be expected on character special device files or on file types not described by the XSH specification. Since this document does not specify the block size used when doing input, checksums of character special files need not process all of the data in those files.

The algorithm is expressed in terms of a bitstream divided into octets. If a file is transmitted between two systems and undergoes any data transformation (such as moving 8-bit characters into 9-bit bytes), identical CRC values cannot be expected. Implementations performing such transformations may extend cksum to handle such situations.

Example

Calculating the checksum for test, a file containing a list of the days of the week.

$ cat test
Monday Tuesday Wednesday Thursday Friday Saturday Sunday
$ cksum test
1222782406 57 test

See also

sum