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