I see the magic number 0xa282ead8
in many CRC implementations, like
https://github.com/kubo/snzip/blob/master/crc32.h
I don't understand CRC calculation very well. What's the effect of this number and what will happen if I change it?
See the explanation and specification here: https://chromium.googlesource.com/external/snappy/+/bfbc527a5740c894ba6f626ad62b17d786629851/framing_format.txt .
Copied from that:
Checksums are not stored directly, but masked, as checksumming data and then its own checksum can be problematic.
This has nothing to do with CRCs, other than I presume their property that the CRC of any message followed by its CRC (with the proper byte ordering) is always the same constant. For some reason unbenownst to me, that is "problematic".
The only thing that happens if you don't follow the specification is that you're not following the specification. The receiver may be expecting that you do.