OLD | NEW |
| (Empty) |
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 | |
25 public void Init() | |
26 { | |
27 _value = -1; | |
28 } | |
29 | |
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] ^ (_v
alue >>> 8); | |
34 } | |
35 | |
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 | |
43 public void UpdateByte(int b) | |
44 { | |
45 _value = Table[(_value ^ b) & 0xFF] ^ (_value >>> 8); | |
46 } | |
47 | |
48 public int GetDigest() | |
49 { | |
50 return _value ^ (-1); | |
51 } | |
52 } | |
OLD | NEW |