Linux cksum command
The checksum of a file is a simple way to check if its data has become corrupted when being transferred from one place to another. If the checksum value of the file is the same before and after being transferred, it is unlikely that any data corruption has accidentally occurred — from signal noise, for example.
Let's say you have a file, myfile.txt, containing the following text:
This is my original file.
You can calculate the checksum using cksum:
...and this is the output:
4164605383 26 myfile.txt
Here, 4164605383 is the checksum, and 26 is the amount of data, in bytes. If you change the contents of the file to this:
This is no longer my original file.
...and run cksum again, you see the following:
632554699 36 myfile.txt
The checksum is very different, and we can also see that there are ten more bytes of data.
The checksum is different even if the number of bytes is same as the original:
This is a corrupted file.
2256884274 26 myfile.txt
...and it changes dramatically even if only one character is different:
This is my original file?
3832066352 26 myfile.txt
Simple checksums, such as those produced by the cksum tool, are useful only for detecting accidental data corruption. It's not meant to protect against malicious alteration of a file. It's been proven that an attacker could carefully make changes to a file that would produce an identical cksum checksum. Therefore, if you need to be absolutely certain that a file is identical to the original, use a more powerful method. We highly recommend using the SHA256 algorithm for verifying data integrity. You can generate and verify SHA256 hash sums using tools such as GNU rhash.
The command syntax of the cksum command is very straightforward. Either specify one or more files to be checked:
...or an option:
|FILE||The name of the file you want to check.|
|--help||Display a help message, and exit.|
|--version||Display version information, and exit.|
Calculate the checksum and bytecount of file.txt and output the values with the file name. Output will be similar to the following:
1740057581 19 file.txt
Here, 1740057581 is the checksum, 19 is the number of bytes in the file, and file.txt is the file name.
cksum myfile.txt myfile2.txt
The above command generates checksums and bytecounts for the files myfile.txt and myfile2.txt. Output resembles the following:
3832066352 26 myfile.txt 3722946153 34 myfile2.txt
cksum < myfile.txt
The above command will redirect the contents of myfile.txt to cksum, which will read the data from standard input and output a checksum and bytecount.
cat myfile.txt | cksum
Running cksum with no options allows you to type anything you like, pressing Enter for new lines. When you are finished entering text, you can press Ctrl+D to signal the end of standard input, and cksum outputs the checksum and bytecount of the text you entered.