CRC-32C (Castagnoli) for C++ and .NET

License & credits

This is a Windows port of Mark Adler's CRC-32C posted on StackOverlow. Porting was done by Robert Važan who also introduced several optimizations and unit tests that weren't part of the original code from StackOverflow.

C++ code is distributed under zlib license. It was originally created by Mark Adler and subsequently modified by Robert Važan.

.NET code is distributed under BSD license. All .NET code was written by Robert Važan.

Project CRC-32C for C++ and .NET
Version 1.0.5
CRC type CRC-32C (Castagnoli)
Polynomial 0x1EDC6F41 / 0x82F63B78
CRC features configurable initial value, chainable, no pre/post-processing, continuous bit order
Optimizations Intel CRC32 instruction (x3) in hardware
Sliced table-driven software fallback
Performance 20 GB/s in hardware
2 GB/s in software
NuGet Crc32C (C++), Crc32C.NET (.NET)
Download crc32c-hw- (C++ and .NET)
Source code crc32c-hw and Crc32C.NET on Bitbucket
License BSD license, zlib license
Credits Robert Važan, Mark Adler