| OLD | NEW |
| (Empty) |
| 1 // Common/CRC.cs | |
| 2 | |
| 3 namespace SevenZip | |
| 4 { | |
| 5 class CRC | |
| 6 { | |
| 7 public static readonly uint[] Table; | |
| 8 | |
| 9 static CRC() | |
| 10 { | |
| 11 Table = new uint[256]; | |
| 12 const uint kPoly = 0xEDB88320; | |
| 13 for (uint i = 0; i < 256; i++) | |
| 14 { | |
| 15 uint r = i; | |
| 16 for (int j = 0; j < 8; j++) | |
| 17 if ((r & 1) != 0) | |
| 18 r = (r >> 1) ^ kPoly; | |
| 19 else | |
| 20 r >>= 1; | |
| 21 Table[i] = r; | |
| 22 } | |
| 23 } | |
| 24 | |
| 25 uint _value = 0xFFFFFFFF; | |
| 26 | |
| 27 public void Init() { _value = 0xFFFFFFFF; } | |
| 28 | |
| 29 public void UpdateByte(byte b) | |
| 30 { | |
| 31 _value = Table[(((byte)(_value)) ^ b)] ^ (_value >> 8); | |
| 32 } | |
| 33 | |
| 34 public void Update(byte[] data, uint offset, uint size) | |
| 35 { | |
| 36 for (uint i = 0; i < size; i++) | |
| 37 _value = Table[(((byte)(_value)) ^ data[offset +
i])] ^ (_value >> 8); | |
| 38 } | |
| 39 | |
| 40 public uint GetDigest() { return _value ^ 0xFFFFFFFF; } | |
| 41 | |
| 42 static uint CalculateDigest(byte[] data, uint offset, uint size) | |
| 43 { | |
| 44 CRC crc = new CRC(); | |
| 45 // crc.Init(); | |
| 46 crc.Update(data, offset, size); | |
| 47 return crc.GetDigest(); | |
| 48 } | |
| 49 | |
| 50 static bool VerifyDigest(uint digest, byte[] data, uint offset,
uint size) | |
| 51 { | |
| 52 return (CalculateDigest(data, offset, size) == digest); | |
| 53 } | |
| 54 } | |
| 55 } | |
| OLD | NEW |