• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // SevenZip/CRC.java
2 
3 package SevenZip;
4 
5 public class CRC
6 {
7 	static public int[] Table = new int[256];
8 
9 	static
10 	{
11 		for (int i = 0; i < 256; i++)
12 		{
13 			int r = i;
14 			for (int j = 0; j < 8; j++)
15 				if ((r & 1) != 0)
16 					r = (r >>> 1) ^ 0xEDB88320;
17 				else
18 					r >>>= 1;
19 			Table[i] = r;
20 		}
21 	}
22 
23 	int _value = -1;
24 
Init()25 	public void Init()
26 	{
27 		_value = -1;
28 	}
29 
Update(byte[] data, int offset, int size)30 	public void Update(byte[] data, int offset, int size)
31 	{
32 		for (int i = 0; i < size; i++)
33 			_value = Table[(_value ^ data[offset + i]) & 0xFF] ^ (_value >>> 8);
34 	}
35 
Update(byte[] data)36 	public void Update(byte[] data)
37 	{
38 		int size = data.length;
39 		for (int i = 0; i < size; i++)
40 			_value = Table[(_value ^ data[i]) & 0xFF] ^ (_value >>> 8);
41 	}
42 
UpdateByte(int b)43 	public void UpdateByte(int b)
44 	{
45 		_value = Table[(_value ^ b) & 0xFF] ^ (_value >>> 8);
46 	}
47 
GetDigest()48 	public int GetDigest()
49 	{
50 		return _value ^ (-1);
51 	}
52 }
53