Hi,
The principle is that a certain amount/block of data is treated like binairy, divided by some constant and the remainder must be zero.
There are several methods. One standard method from the CCITT uses Binairy "1.0001.0000.0010.0001" as a constant. The data in a data block with constant bit-length includes a 16 bits CRC which should make the remainder of this division, zero. If the checksum is not correct, the data block is not ok.
Regards,
Crox