This project contains Java implementation for several CRC algorithms: byte-by-byte (Sarwate's algorithm), Slicing-by-8, Slicing-by-16.
I intend to port Interleaved Word By Word algorithm from crcutil, but performance might be worse than the other algorithms in Java. That algorithm is more suitable for C/C++ where we have native access to the data stream.
Also it contains a factory which, based on JDK will try to provide the appropiate implementation. This project was build for educational purposes and is far from being complete.
-
Sarwate, D.V., "Computation of Cyclic Redundancy Checks via Table Look-Up", Communications of the ACM, 31(8), pp.1008-1013, 1988.
-
Andrew Kadatch and Bob Jenkins. High performance CRC implementation, 2010.
-
Mark Adler. crcany and crcgen - Compute any CRC and generate C code for any CRC definition.
-
Mark Adler. How CRC combine works.
-
Ross Williams. A PAINLESS GUIDE TO CRC ERROR DETECTION ALGORITHMS, 1993.
-
Greg Cook. Catalogue of parametrised CRC algorithms.
-
Michael E. Kounavis and Frank L. Berry. A systematic approach to building high performance, software-based, CRC generators, 2005. Slicing-by-4, Slicing-by-8. original link. (Slicing-by-4, Slicing-by-8).
-
Nicolai Stange. Combining and splitting CRCs, 2015.
-
Intel. Choosing a CRC polynomial and associated method for Fast CRC Computation on Intel® Processors, 2012.
-
Intel. Fast CRC Computation for iSCSI Polynomial Using CRC32 Instruction, 2011.
-
Intel. Fast CRC Computation for Generic Polynomials Using PCLMULQDQ Instruction, 2009.
-
Intel. PCLMULQDQ Based CRC PoC.
-
Anton Blanchard. Accelerated CRC32 for POWER8 using vpmsum instructions.
-
Linux kernel ARMv8 PMULL/NEON and CRC32/CRC32C - port of Intel's SSE4.2 algorithm.
-
Generate Verilog or VHDL code for CRC. CRC Generation Tool.
-
Philip Koopman, Carnegie Mellon University. CRC Polynomials Evaluation Software.
-
Fast CRC table construction and rolling CRC hash calculation.