namespace MoShiro.Protocol; /// CRC-32C(Castagnoli),RawChunk 的完整性校验。 public static class Crc32c { private static readonly uint[] s_table = BuildTable(); public static uint Compute(ReadOnlySpan data) { uint crc = uint.MaxValue; foreach (byte b in data) { crc = s_table[(crc ^ b) & 0xFF] ^ (crc >> 8); } return ~crc; } private static uint[] BuildTable() { var table = new uint[256]; for (uint i = 0; i < 256; i++) { uint c = i; for (int k = 0; k < 8; k++) { c = (c & 1) != 0 ? (c >> 1) ^ 0x82F63B78u : c >> 1; } table[i] = c; } return table; } }