Java开发中全能的CRC校验利器:`plus.wcj.crc`库使用详解
Java 社区中一个功能全面的 CRC 校验库——plus.wcj.crc。该库支持从 CRC-3 到 CRC-82 的 100 多种 CRC 算法标准,广泛适用于嵌入式开发、通信协议、工业自动化和文件完整性校验等场景。文章通过 Maven 引入方式和完整代码示例,演示了如何快速计算任意 CRC 校验值,并概览了各位宽度下支持的 CRC 类型。该库封装简单,接口友好,是 Java 项目中实现 CR
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>
快速上手
这个库的使用方式非常简单,以下是一个遍历所有支持的 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 算法,既方便又专业!
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)