Skip to content

Latest commit

 

History

37 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Supports Hamming, Parity, Adler, Fletcher, Internet Checksum, LRC, XOR, additive checksums, and 200+ standard CRC (Cyclic Redundancy Check) algorithms in Java, covering bit widths from CRC-3 to CRC-82. Suitable for industrial communication, embedded development, file transmission, and other scenarios.

Feel free to Star, Fork, or submit Issues to contribute and improve the project!

Usage

Online CRC calculator: https://crc.wcj.plus/

  • maven

Maven Central Version

<dependency>
    <groupId>plus.wcj.crc</groupId>
    <artifactId>crc</artifactId>
    <version>RELEASE</version>
</dependency>

Example

import plus.wcj.crc.ChecksumModels;
import plus.wcj.crc.Checksums;
import plus.wcj.crc.CRCUtils;
import plus.wcj.crc.model.SumModel;

public class Example {

    public static void main(String[] args) {
        String input = "123456789";

        System.out.println(Checksums.hex(ChecksumModels.CRC_16_MODBUS, input)); // 4B37
        System.out.println(Checksums.hex(ChecksumModels.CRC_16_MODBUS, CRCUtils.hexToBytes("313233343536373839"))); // 4B37
        System.out.println(Checksums.hex(Checksums.find("crc-32"), input));     // CBF43926
        System.out.println(Checksums.hex(Checksums.findOrDefault("unknown"), input)); // empty

        byte[] encoded = Checksums.array(ChecksumModels.HAMMING_8_4, input);
        System.out.println(new String(Checksums.restore(ChecksumModels.HAMMING_8_4, encoded))); // 123456789

        for (ChecksumModels model : ChecksumModels.values()) {
            System.out.println(model.names()[0] + ": " + Checksums.hex(model, input));
        }

        Checksums.register(SumModel.create(8, 0x00, "DD", "MY-SUM-8"));
        System.out.println(Checksums.hex(Checksums.find("my-sum-8"), input)); // DD
    }
}

Checksums.findOrDefault(name) returns ChecksumModels.NONE when the requested model does not exist. The original Checksums.find(name) method continues to return null.

Custom models can be registered with Checksums.register(model). All names returned by model.names() are added to the case-insensitive model registry.

crc

  • CRC 3

CRC-3/GSM, CRC-3/ROHC,

  • CRC 4

CRC-4/G-704, CRC-4/ITU, CRC-4/INTERLAKEN,

  • CRC 5

CRC-5/EPC-C1G2, CRC-5/EPC, CRC-5/G-704, CRC-5/ITU, CRC-5/USB,

  • CRC 6

CRC-6/CDMA2000-A, CRC-6/CDMA2000-B, CRC-6/DARC, CRC-6/G-704, CRC-6/ITU, CRC-6/GSM,

  • CRC 7

CRC-7/MMC, CRC-7, CRC-7/ROHC, CRC-7/UMTS,

  • CRC 8

CRC-8/AUTOSAR, CRC-8/BLUETOOTH, CRC-8/CDMA2000, CRC-8/DARC, CRC-8/DVB-S2, CRC-8/GSM-A, CRC-8/GSM-B, CRC-8/HITAG, CRC-8/I-432-1, CRC-8/ITU, CRC-8/I-CODE, CRC-8/LTE, CRC-8/MAXIM-DOW, CRC-8/MAXIM, DOW-CRC, CRC-8/MIFARE-MAD, CRC-8/NRSC-5, CRC-8/OPENSAFETY, CRC-8/ROHC, CRC-8/SAE-J1850, CRC-8/SMBUS, CRC-8, CRC-8/TECH-3250, CRC-8/AES, CRC-8/EBU, CRC-8/WCDMA,

  • CRC 10

CRC-10/ATM, CRC-10, CRC-10/I-610, CRC-10/CDMA2000, CRC-10/GSM,

  • CRC 11

CRC-11/FLEXRAY, CRC-11, CRC-11/UMTS,

  • CRC 12

CRC-12/CDMA2000, CRC-12/DECT, X-CRC-12, CRC-12/GSM, CRC-12/UMTS, CRC-12/3GPP,

  • CRC 13

CRC-13/BBC,

  • CRC 14

CRC-14/DARC, CRC-14/GSM,

  • CRC 15

CRC-15/CAN, CRC-15, CRC-15/MPT1327,

  • CRC 16

CRC-16/ARC, ARC, CRC-16, CRC-16/LHA, CRC-IBM, CRC-16/CDMA2000, CRC-16/CMS, CRC-16/DDS-110, CRC-16/DECT-R, R-CRC-16, CRC-16/DECT-X, X-CRC-16, CRC-16/DNP, CRC-16/EN-13757, CRC-16/GENIBUS, CRC-16/DARC, CRC-16/EPC, CRC-16/EPC-C1G2, CRC-16/I-CODE, CRC-16/GSM, CRC-16/IBM-3740, CRC-16/AUTOSAR, CRC-16/CCITT-FALSE, CRC-16/IBM-SDLC, CRC-16/ISO-HDLC, CRC-16/ISO-IEC-14443-3-B, CRC-16/X-25, CRC-B, X-25, CRC-16/ISO-IEC-14443-3-A, CRC-A, CRC-16/KERMIT, CRC-16/BLUETOOTH, CRC-16/CCITT, CRC-16/CCITT-TRUE, CRC-16/V-41-LSB, CRC-CCITT, KERMIT, CRC-16/LJ1200, CRC-16/M17, CRC-16/MAXIM-DOW, CRC-16/MAXIM, CRC-16/MCRF4XX, CRC-16/MODBUS, MODBUS, CRC-16/NRSC-5, CRC-16/OPENSAFETY-A, CRC-16/OPENSAFETY-B, CRC-16/PROFIBUS, CRC-16/IEC-61158-2, CRC-16/RIELLO, CRC-16/SPI-FUJITSU, CRC-16/AUG-CCITT, CRC-16/T10-DIF, CRC-16/TELEDISK, CRC-16/TMS37157, CRC-16/UMTS, CRC-16/BUYPASS, CRC-16/VERIFONE, CRC-16/USB, CRC-16/XMODEM, CRC-16/ACORN, CRC-16/LTE, CRC-16/V-41-MSB, XMODEM, ZMODEM,

  • CRC 17

CRC-17/CAN-FD,

  • CRC 21

CRC-21/CAN-FD,

  • CRC 24

CRC-24/BLE, CRC-24/FLEXRAY-A, CRC-24/FLEXRAY-B, CRC-24/INTERLAKEN, CRC-24/LTE-A, CRC-24/LTE-B, CRC-24/OPENPGP, CRC-24, CRC-24/OS-9,

  • CRC 30

CRC-30/CDMA,

  • CRC 31

CRC-31/PHILIPS,

  • CRC 32

CRC-32/AIXM, CRC-32Q, CRC-32/AUTOSAR, CRC-32/BASE91-D, CRC-32D, CRC-32/BZIP2, CRC-32/AAL5, CRC-32/DECT-B, B-CRC-32, CRC-32/CD-ROM-EDC, CRC-32/CKSUM, CKSUM, CRC-32/POSIX, CRC-32/ISCSI, CRC-32/BASE91-C, CRC-32/CASTAGNOLI, CRC-32/INTERLAKEN, CRC-32C, CRC-32/NVME, CRC-32/ISO-HDLC, CRC-32, CRC-32/ADCCP, CRC-32/V-42, CRC-32/XZ, PKZIP, CRC-32/JAMCRC, JAMCRC, CRC-32/MEF, CRC-32/MPEG-2, CRC-32/XFER, XFER,

  • CRC 40

CRC-40/GSM,

  • CRC 64

CRC-64/ECMA-182, CRC-64, CRC-64/GO-ISO, CRC-64/MS, CRC-64/NVME, CRC-64/REDIS, CRC-64/WE, CRC-64/XZ, CRC-64/GO-ECMA,

  • CRC 82

CRC-82/DARC,

Other

  • XOR

XOR-8, XOR, BCC, XOR-16, XOR-32,

  • Checksum

Checksum-8, SUM-8, Checksum-16, SUM-16, Checksum-32, SUM-32,

  • LRC

LRC-8, LRC,

  • Internet Checksum

Internet Checksum-16, Internet Checksum, IP Checksum,

  • Fletcher

Fletcher-16, Fletcher-32,

  • Adler

Adler-32, Adler32,

  • Parity

Parity-Even, Even Parity, Parity-Odd, Odd Parity,

  • Hamming

Hamming-7-4, Hamming (7,4), Hamming-8-4, Hamming (8,4),

Hamming models encode each input byte as two 4-bit nibbles. Checksums.restore(...) can restore Hamming encoded data and correct single-bit errors.

For Hamming models, bigEndian=true stores each code word in MSB-first order, and bigEndian=false stores it in LSB-first order.

About

All CRC algorithms implemented in Java. support: CRC-3、CRC-4、CRC-5、CRC-6、CRC-7、CRC-8、CRC-10、CRC-11、CRC-12、CRC-13、CRC-14、CRC-15、CRC-16、CRC-17、CRC-21、CRC-24、CRC-30、CRC-31、CRC-32、CRC-40、CRC-64、CRC-82

Topics

Resources

Stars

28 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages