This program has very good Hashsum support, but it is still lacking many checksums
-- https://en.wikipedia.org/wiki/Cyclic_redundancy_check
Sorry for the mess below, this is a wikipedia table copy.
Most of the ckecksums below are not supported.
Hopefully the Polynomial information is enough to allow them to be added.
My own project (Codegroup) would be best suited for the almost never used CRC32K (Koopman).
// CRCs //
CRC-7 telecom systems, G.707, G.832, MMC, SD 0x09 0x48 0x44
CRC-8-CCITT I.432.1; ATM HEC, ISDN HEC and cell delineation 0x07 0xE0 0x83
CRC-8-Dallas/Maxim 1-Wire bus 0x31 0x8C 0x98
CRC-8 0xD5 0xAB 0xEA[7]
CRC-8-SAE J1850 AES3 0x1D 0xB8 0x8E
CRC-8-WCDMA [16] 0x9B 0xD9 0xCD[7]
CRC-10 ATM; I.610 0x233 0x331 0x319
CRC-11 FlexRay[17] 0x385 0x50E 0x5C2
CRC-12 telecom systems[18][19] 0x80F 0xF01 0xC07[7]
CRC-15-CAN 0x4599 0x4CD1 0x62CC
CRC-15-MPT1327 [20] 0x6815 0x540B 0x740A
CRC-16-IBM Bisync, Modbus, USB, ANSI X3.28, SIA DC-07, many others; also known as CRC-16 and CRC-16-ANSI 0x8005 0xA001 0xC002
CRC-16-CCITT X.25, V.41, HDLC FCS, XMODEM, Bluetooth, PACTOR, SD, many others; known as CRC-CCITT 0x1021 0x8408 0x8810[7]
CRC-16-T10-DIF SCSI DIF 0x8BB7[21] 0xEDD1 0xC5DB
CRC-16-DNP DNP, IEC 870, M-Bus 0x3D65 0xA6BC 0x9EB2
CRC-16-DECT cordless telephones[22] 0x0589 0x91A0 0x82C4
CRC-16-ARINC ACARS applications[23] 0xA02B 0xD405 0xD015
Fletcher Used in Adler-32 A & B CRCs Not a CRC; see Fletcher's checksum
CRC-24 FlexRay[17] 0x5D6DCB 0xD3B6BA 0xAEB6E5
CRC-24-Radix-64 OpenPGP, RTCM104v3 0x864CFB 0xDF3261 0xC3267D
CRC-30 CDMA 0x2030B9C7 0x38E74301 0x30185CE3
Adler-32 Zlib Not a CRC; see Adler-32
CRC-32 HDLC, ANSI X3.66, ITU-T V.42, Ethernet, Serial ATA, MPEG-2, PKZIP, Gzip, Bzip2, PNG,[24] many others 0x04C11DB7 0xEDB88320 0x82608EDB[10]
CRC-32C (Castagnoli) iSCSI, SCTP, G.hn payload, SSE4.2, Btrfs, ext4 0x1EDC6F41
0x82F63B78 0x8F6E37A0[10]
CRC-32K (Koopman) 0x741B8CD7 0xEB31D82E 0xBA0DC66B[10]
CRC-32Q aviation; AIXM[25] 0x814141AB 0xD5828281 0xC0A0A0D5
CRC-40-GSM GSM control channel[26][27] 0x0004820009 0x9000412000 0x8002410004
Thank you for the feature request. Actually starting with Jacksum 1.7.0 you can specify any CRC algorithm that can be expressed by the "Rocksoft(tm) Model CRC Algorithm" if the width is an even multiple of 4 bits. In other words, the 32 bit polynomial that has been suggested by Philip Koopman in 2002 can be used by Jacksum since 2006. Note that in addition to the polynomial, you also have to decide values for init, refIn, refOut and xorOut. The poly alone is not enough information to identify a concrete actual implementation for a CRC.
IMHO an excellent catalogue of parametrised CRC algorithms, gathered by Greg Cook can be found at
http://reveng.sourceforge.net/crc-catalogue/all.htm
To get more information on the CrcGeneric feature, please open the command line and enter
$ jacksum -h crc: | more
Since the poly and the values for init, refOut and xorOut are well known for Castagnoli for instance, here is the example for CRC-32/Castagnoli:
$ jacksum -a crc:32,1edc6f41,ffffffff,true,true,ffffffff -E hex -q txt:123456789
e3069283 9
If you want to use the GPL'ed Jacksum code for your project, please have a look at the jonelo.jacksum.algorithm.CrcGeneric class.
Last edit: Johann N. Löfflmann 2013-04-27