Files

33 lines
709 B
C#
Raw Permalink Normal View History

2026-08-27 11:22:54 -06:00
namespace Crysome.Common.Network.FileTransfer;
internal static class Crc32
{
private static readonly uint[] _table = Build();
private static uint[] Build()
{
uint[] array = new uint[256];
for (uint num = 0u; num < 256; num++)
{
uint num2 = num;
for (int i = 0; i < 8; i++)
{
num2 = (((num2 & 1) != 0) ? (0xEDB88320u ^ (num2 >> 1)) : (num2 >> 1));
}
array[num] = num2;
}
return array;
}
internal static uint Compute(byte[] data, int offset, int len)
{
uint num = uint.MaxValue;
int num2 = offset + len;
for (int i = offset; i < num2; i++)
{
num = (num >> 8) ^ _table[(num ^ data[i]) & 0xFF];
}
return num ^ 0xFFFFFFFFu;
}
}