Menu

#10 Add CRC 32K (Koopman)

v1.7.0
closed
None
5
2015-05-27
2013-04-26
No

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

Discussion

  • Johann N. Löfflmann

    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
  • Johann N. Löfflmann

    • summary: CRC 32K (Koopman), ADD --> Add CRC 32K (Koopman)
    • status: open --> pending
    • assigned_to: Johann N. Löfflmann
     
  • Johann N. Löfflmann

    • status: pending --> closed
     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.