Java开发中全能的CRC校验利器:plus.wcj.crc库使用详解
在嵌入式通信、文件传输、数据存储等诸多领域,CRC(Cyclic Redundancy Check,循环冗余校验)是最常见的数据校验手段之一。虽然 Java 标准库中并未提供丰富的 CRC 支持,但在本文中,我们将介绍一个功能强大、覆盖面极广的 Java CRC 校验库 —— plus.wcj.crc。
GitHub仓库:https://github.com/galaxy-sea/crc
安装依赖
首先,在你的 Maven 项目中引入如下依赖:
<dependency>
<groupId>plus.wcj.crc</groupId>
<artifactId>crc</artifactId>
<version>1.0.0</version>
</dependency>
AI写代码
快速上手
这个库的使用方式非常简单,以下是一个遍历所有支持的 CRC 类型并计算校验值的示例:
public static void main(String[] args) {
byte[] data = "1234567890".getBytes();
for (CRCModel crcModel : CRCModel.values()) {
CRC crc = crcModel.getCrc();
String names = Arrays.toString(crcModel.getNames());
System.out.println(names + " checkSum: " + Arrays.toString(crc.array(data)));
System.out.println(names + " checkSum: " + crc.hex(data));
}
}
输出说明:
crc.array(data):以字节数组返回 CRC 校验结果;
crc.hex(data):以十六进制字符串形式返回校验值,适合可读性输出或文本记录。
支持的 CRC 类型
该库支持 100+ 种 常见和标准化的 CRC 算法,涵盖 3 位到 82 位的各种宽度,广泛应用于各种协议和标准中。
通过 CRCModel.values() 轻松访问所有模型枚举值,模型名称中常包含标准或使用场景标识,如 GSM, USB, MODBUS, BLUETOOTH, AUTOSAR 等。
常见分类一览
CRC宽度 支持类型
CRC 3 CRC-3/GSM,CRC-3/GSM,CRC-3/ROHC
CRC 4 CRC-4/G-704, CRC-4/ITU,CRC-4/G-704,CRC-4/ITU,CRC-4/INTERLAKEN
CRC 5 CRC-5/EPC-C1G2, CRC-5/EPC,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-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/MMC, CRC-7,CRC-7/ROHC,CRC-7/UMTS
CRC 8 CRC-8/AUTOSAR,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/ATM, CRC-10, CRC-10/I-610,CRC-10/CDMA2000,CRC-10/GSM
CRC 11 CRC-11/FLEXRAY, CRC-11,CRC-11/FLEXRAY, CRC-11,CRC-11/UMTS
CRC 12 CRC-12/CDMA2000,CRC-12/CDMA2000,CRC-12/DECT, X-CRC-12,CRC-12/GSM,CRC-12/UMTS, CRC-12/3GPP
CRC 13 CRC-13/BBC,CRC-13/BBC
CRC 14 CRC-14/DARC,CRC-14/DARC,CRC-14/GSM
CRC 15 CRC-15/CAN, 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/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-17/CAN-FD
CRC 21 CRC-21/CAN-FD,CRC-21/CAN-FD
CRC 24 CRC-24/BLE,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-30/CDMA
CRC 31 CRC-31/PHILIPS,CRC-31/PHILIPS
CRC 32 CRC-32/AIXM, CRC-32Q,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-40/GSM
CRC 64 CRC-64/ECMA-182, 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,CRC-82/DARC
典型应用场景
嵌入式设备通信协议(如 CAN、FLEXRAY、LIN)
工业自动化(如 MODBUS、PROFIBUS)
文件完整性校验(ZIP、XZ、MPG)
无线通信(如 GSM、LTE、BLE)
安全与存储协议(如 NVME、OPENPGP)
总结
plus.wcj.crc 是一个功能极其全面的 Java CRC 工具库,特别适用于对接多种标准协议的开发者。其核心优势在于:
支持丰富的 CRC 标准算法;
简单易用的 API;
兼容各种应用场景。
如果项目中需要进行 CRC 校验,不妨试试这个库,一行代码即可调用所有常见 CRC 算法,既方便又专业!