Class CrcCombineChecksumUtil
java.lang.Object
software.amazon.awssdk.checksums.internal.CrcCombineChecksumUtil
Utility class that provides methods for combining CRC checksums using Galois Field arithmetic.
This class allows combining two CRC values into a single CRC that represents the concatenated
data, without recalculating the CRC from scratch.
The implementation of CRC combination was taken from the zlib source code here: https://github.com/luvit/zlib/blob/master/crc32.c
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionstatic long
combine
(long crc1, long crc2, long originalLengthOfCrc2, long[][] combineMatrices) Combines two CRC values into a single CRC using the specified combine matrices.static long[][]
generateCombineMatrices
(long polynomial) Generates the combine matrices for CRC calculations.
-
Field Details
-
CRC_SIZE
public static final int CRC_SIZE- See Also:
-
-
Method Details
-
generateCombineMatrices
public static long[][] generateCombineMatrices(long polynomial) Generates the combine matrices for CRC calculations.- Parameters:
polynomial
- The CRC polynomial.- Returns:
- A 2D array representing the combine matrices.
-
combine
public static long combine(long crc1, long crc2, long originalLengthOfCrc2, long[][] combineMatrices) Combines two CRC values into a single CRC using the specified combine matrices. The combination is performed using Galois Field arithmetic to effectively merge two CRC checksums that correspond to two separate data blocks. This method allows calculating the CRC for the concatenated data without having to recompute the CRC from scratch, which can significantly improve performance for large datasets.THIS COMBINE FUNCTION HAS BEEN MODIFIED FROM THE ORIGINAL VERSION. The code comes from https://github.com/luvit/zlib/blob/master/crc32.c.
- Parameters:
crc1
- The first CRC value.crc2
- The second CRC value.originalLengthOfCrc2
- The length of the original data for the second CRC. This represents the length of data used to computecrc2
.combineMatrices
- The combine matrices used for combining CRCs. These matrices are precomputed to facilitate efficient combination.- Returns:
- The combined CRC value representing the CRC for the concatenated data of both CRC values.
- Throws:
IllegalArgumentException
- iforiginalLengthOfCrc2
is negative.
-