Security Java

// SevenZip/CRC.java
//package SevenZip;
public class CRC
{
  static public int[] Table = new int[256];
  
  static
  {
    for (int i = 0; i < 256; i++)
    {
      int r = i;
      for (int j = 0; j < 8; j++)
        if ((r & 1) != 0)
          r = (r >>> 1) ^ 0xEDB88320;
        else
          r >>>= 1;
      Table[i] = r;
    }
  }
  
  int _value = -1;
  
  public void Init()
  {
    _value = -1;
  }
  
  public void Update(byte[] data, int offset, int size)
  {
    for (int i = 0; i < size; i++)
      _value = Table[(_value ^ data[offset + i]) & 0xFF] ^ (_value >>> 8);
  }
  
  public void Update(byte[] data)
  {
    int size = data.length;
    for (int i = 0; i < size; i++)
      _value = Table[(_value ^ data[i]) & 0xFF] ^ (_value >>> 8);
  }
  
  public void UpdateByte(int b)
  {
    _value = Table[(_value ^ b) & 0xFF] ^ (_value >>> 8);
  }
  
  public int GetDigest()
  {
    return _value ^ (-1);
  }
}