CRC from 7 zip : CRC « Security « Java






CRC from 7 zip

     
// 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);
  }
}

   
    
    
    
    
  








Related examples in the same category

1.CRC Demo
2.This program computes the CRC checksum of a file
3.Calculates CRC checksum for data being (un-)compressed by BZip2 algorithms.
4.Uses CRC32 algorithm for creating fingerprint.
5.16-Bit CRC checksum