joriszwart.nl

I code dreams™

Crc32.cs

View Download

public static class Crc32
{
    public static uint HashToUInt32(byte[] source)
    {
        const uint polynomial = 0xEDB88320; // ISO-HDLC

        var crc = 0b11111111_11111111_11111111_11111111;

        foreach (var b in source)
        {
            crc ^= b;

            for (var bit = 0; bit < 8; bit++)
            {
                var lsb = crc & 1;
                var mask = lsb * polynomial;
                crc = (crc >> 1) ^ mask;
            }
        }

        return crc ^ 0b11111111_11111111_11111111_11111111;
    }
}

View Download