User Commands cksum(1) NAME cksum - write file checksums and sizes SYNOPSIS /usr/bin/cksum /usr/bin/cksum [ options ] [file...] ksh93 cksum [ options ] [file...] DESCRIPTION The cksum command and ksh93 built-in command "cksum" lists the checksum, and for most methods the block count, for each file argument. The standard input is read if there are no file arguments. The default method is "cksum" which 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. For each file processed successfully the cksum method will write in the following format: "%u %d %s\n" , <# of octets>, Method names consist of a leading identifier and 0 or more options separated by -. The CRC used is based on the polynomial used for CRC error checking in the referenced Ethernet standard. The encoding for the CRC checksum is defined by the generat- ing 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: 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 x**32 (that is, shifted left 32 bits) and divided by G(x) using mod 2 division, produc- ing 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. getconf PATH_RESOLVE determines how symbolic links are handled. This can be explicitly overridden by the --logical, --metaphysical, and --physical options below. PATH_RESOLVE can be one of: logical Follow all symbolic links. metaphysical Follow command argument symbolic links, otherwise don't follow. physical Don't follow symbolic links. OPTIONS The following options are supported by /usr/bin/cksum -a, --all List the checksum for all files. Use with --total to list both individual and total checksums and block counts. -b, --binary Read files in binary mode. This is the default. -B, --scale=scale Block count scale (bytes per block) override for methods that include size in the output. The default is method specific. -c, --check Each file is interpreted as the output from a previous sum. If --header or --permissions was specified in the previous sum then the checksum method is automatically determined, otherwise --method must be specified. The listed checksum is compared with the current value and a warning is issued for each file that does not match. If file was generated by --permissions then the file mode, user and group are also checked. Empty lines, lines starting with #, or the line # are ignored. Lines containing no blanks are interpreted as [no]name[=value] options: method=name Checksum method to apply to subsequent lines. permissions Subsequent lines were generated with --permissions. -h, --header Print the checksum method as the first output line. Used with --check and --permissions. -l, --list Each file is interpreted as a list of files, one per line, that is checksummed. -p, --permissions If --check is not specified then list the file mode, user and group between the checksum and path. User and group matching the caller are output as -. If --check is specified then the mode, user and group for each path in file are updated if necessary to match those in file. A warning is printed on the standard error for each changed file. -R, --recursive Recursively checksum the contents of directories. -t, --total List only the total checksum and block count of all files. --all --total lists each checksum and the total. The total checksum and block count may be different from the checksum and block count of the catenation of all files due to partial blocks that may occur when the files are treated separately. -T, --text Read files in text mode (i.e., treat \r\n as \n). -w, --warn Warn about invalid --check lines. On by default; -w means --nowarn. -x, --method|algorithm=method Specifies the checksum method to apply. Parenthesized method options are readonly implementation details. att|sys5|s5|default The system 5 release 4 checksum. This is the default for sum when getconf UNIVERSE is att. This is the only true sum; all of the other methods are order dependent. ast4|32x4|tw The ast 128 bit PRNG hash generated by catenating 4 separate 32 bit PNRG hashes. The block count is not printed. bsd|ucb The BSD checksum. crc 32 bit CRC (cyclic redundancy check). polynomial=mask The 32 bit crc polynomial bitmask with implicit bit 32. The default value is 0xedb88320. done[=number] XOR the final crc value with number. 0xffffffff is used if number is omitted. The option value may be omitted. The default value is 0. init[=number] The initial crc value. 0xffffffff is used if number is omitted. The option value may be omitted. The default value is 0. rotate XOR each input character with the high order crc byte (instead of the low order). size[=number] Include the total number of bytes in the crc. number, if specified, is first XOR'd into the size. The option value may be omitted. The default value is 0. prng 32 bit PRNG (pseudo random number generator) hash. mpy=number The 32 bit PRNG multiplier. The default value is 0x01000193. add=number The 32 bit PRNG addend. The default value is 0. init[=number] The PRNG initial value. 0xffffffff is used if number is omitted. The option value may be omitted. The default value is 0x811c9dc5. md4|MD4 RFC1320 MD4 message digest. Cryptographically weak. The block count is not printed. (version) md4 (solaris -lmd) 2005-07-26 md5|MD5 RFC1321 MD5 message digest. Cryptographically weak. The block count is not printed. (version) md5 (solaris -lmd) 2005-07-26 sha1|SHA1|sha-1|SHA-1 RFC3174 / FIPS 180-1 SHA-1 secure hash algorithm 1. Cryptographically weak. The block count is not printed. (version) sha1 (solaris -lmd) 2005-07-26 sha256|sha-256|SHA256|SHA-256 FIPS 180-2 SHA256 secure hash algorithm. The block count is not printed. (version) sha256 (solaris -lmd) 2005-07-26 sha384|sha-384|SHA384|SHA-384 FIPS 180-2 SHA384 secure hash algorithm. The block count is not printed. (version) sha384 (solaris -lmd) 2005-07-26 sha512|sha-512|SHA512|SHA-512 FIPS 180-2 SHA512 secure hash algorithm. The block count is not printed. (version) sha512 (solaris -lmd) 2005-07-26 posix|cksum|std|standard The posix 1003.2-1992 32 bit crc checksum. This is the default cksum(1) method. Shorthand for crc-0x04c11db7-rotate-done-size. zip The zip(1) crc. Shorthand for crc-0xedb88320-init-done. fddi The FDDI crc. Shorthand for crc-0xedb88320-size=0xcc55cc55. fnv|fnv1 The Fowler-Noll-Vo 32 bit PRNG hash with non-zero initializer (FNV-1). Shorthand for prng-0x01000193-init=0x811c9dc5. ast|strsum The ast strsum(3) PRNG hash. Shorthand for prng-0x63c63cd9-add=0x9c39c33d. -L, --logical|follow Follow symbolic links when traversing directories. The default is determined by getconf PATH_RESOLVE. -H, --metaphysical Follow command argument symbolic links, otherwise don't follow symbolic links when traversing directories. The default is determined by getconf PATH_RESOLVE. -P, --physical Don't follow symbolic links when traversing directories. The default is determined by getconf PATH_RESOLVE. -r, --bsd Equivalent to --method=bsd --scale=512 for compatibility with other sum(1) implementations. -s, --sysv Equivalent ti --method=sys5 for for compatibility with other sum(1) implementations. -S, --silent|status No output for --check; 0 exit status means all sums matched, non-0 means at least one sum failed to match. Ignored for --permissions. --man, --html, --nroff Prints builtin manual page in either plain text, HTML or nroff format. --help Prints basic help information --version Prints version information OPERANDS The following operand is supported: file A path name of a file to be checked. If no file operands are specified, the standard input is used. USAGE The cksum command 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, the CRC 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. In such cases a cryptographically stronger hash method (such as "sha512") is recommended. Although input files to cksum can be any type, the results need not be what would be expected on character special dev- ice files. 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 CRC 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 or changing "Little Endian" byte ordering to "Big Endian"), identical CRC values cannot be expected. Implementations performing such transformations may extend cksum to handle such situations. See largefile(5) for the description of the behavior of cksum when encountering files greater than or equal to 2 Gbyte ( 2**31 bytes). ENVIRONMENT VARIABLES See environ(5) for descriptions of the following environment variables that affect the execution of cksum: LANG, LC_ALL, LC_CTYPE, LC_MESSAGES, and NLSPATH. EXIT STATUS The following exit values are returned: 0 All files were processed successfully. >0 An error occurred. ATTRIBUTES See attributes(5) for descriptions of the following attri- butes: ____________________________________________________________ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | |_____________________________|_____________________________| | Availability | SUNWcsu | |_____________________________|_____________________________| | Interface Stability | Standard | |_____________________________|_____________________________| This command conforms to IEEE Std 1003.1-2008. SEE ALSO digest(1), ksh93(1), sum(1), bart(1M), attributes(5), environ(5), largefile(5), standards(5), http://www.opengroup.org/onlinepubs/9699919799/utilities/cksum.html SunOS 5.10 Last change: 1 Feb 1995 3