ci/woodpecker/push/main-amd64-build Pipeline was successful
Namespaces, assemblies, solution, binaries, images, systemd units, config paths, environment variables, protocol methods and the Linux user are all renamed. Breaking: existing databases, node identities and installed units must be recreated.
36 lines
791 B
C#
36 lines
791 B
C#
namespace MoShiro.Protocol;
|
||
|
||
/// <summary>CRC-32C(Castagnoli),RawChunk 的完整性校验。</summary>
|
||
public static class Crc32c
|
||
{
|
||
private static readonly uint[] s_table = BuildTable();
|
||
|
||
public static uint Compute(ReadOnlySpan<byte> 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;
|
||
}
|
||
}
|