Class Crc32C

  • All Implemented Interfaces:
    java.util.zip.Checksum

    final class Crc32C
    extends java.lang.Object
    implements java.util.zip.Checksum
    A pure-java implementation of the CRC32 checksum that uses the CRC32-C polynomial, the same polynomial used by iSCSI and implemented on many Intel chipsets supporting SSE4.2.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private int crc
      the current CRC value, bit-flipped
      private static int MASK_DELTA  
      (package private) static int[] T8_0  
      (package private) static int[] T8_1  
      (package private) static int[] T8_2  
      (package private) static int[] T8_3  
      (package private) static int[] T8_4  
      (package private) static int[] T8_5  
      (package private) static int[] T8_6  
      (package private) static int[] T8_7  
    • Constructor Summary

      Constructors 
      Constructor Description
      Crc32C()
      Create a new PureJavaCrc32 object.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int getIntValue()  
      int getMaskedValue()  
      long getValue()  
      static int mask​(int crc)
      Return a masked representation of crc.
      static int maskedCrc32c​(byte[] data)  
      static int maskedCrc32c​(byte[] data, int offset, int length)  
      void reset()  
      static int unmask​(int maskedCrc)
      Return the crc whose masked representation is masked_crc.
      void update​(byte[] b, int off, int len)  
      void update​(int b)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.util.zip.Checksum

        update, update
    • Field Detail

      • crc

        private int crc
        the current CRC value, bit-flipped
      • T8_0

        static final int[] T8_0
      • T8_1

        static final int[] T8_1
      • T8_2

        static final int[] T8_2
      • T8_3

        static final int[] T8_3
      • T8_4

        static final int[] T8_4
      • T8_5

        static final int[] T8_5
      • T8_6

        static final int[] T8_6
      • T8_7

        static final int[] T8_7
    • Constructor Detail

      • Crc32C

        public Crc32C()
        Create a new PureJavaCrc32 object.
    • Method Detail

      • maskedCrc32c

        public static int maskedCrc32c​(byte[] data)
      • maskedCrc32c

        public static int maskedCrc32c​(byte[] data,
                                       int offset,
                                       int length)
      • mask

        public static int mask​(int crc)
        Return a masked representation of crc.

        Motivation: it is problematic to compute the CRC of a string that contains embedded CRCs. Therefore we recommend that CRCs stored somewhere (e.g., in files) should be masked before being stored.

      • unmask

        public static int unmask​(int maskedCrc)
        Return the crc whose masked representation is masked_crc.
      • getMaskedValue

        public int getMaskedValue()
      • getIntValue

        public int getIntValue()
      • getValue

        public long getValue()
        Specified by:
        getValue in interface java.util.zip.Checksum
      • reset

        public void reset()
        Specified by:
        reset in interface java.util.zip.Checksum
      • update

        public void update​(byte[] b,
                           int off,
                           int len)
        Specified by:
        update in interface java.util.zip.Checksum
      • update

        public void update​(int b)
        Specified by:
        update in interface java.util.zip.Checksum