Think of a CRC as doing a LONG DIVISION in school, the polynomial is the divisor, and the data stream the dividend, the "Expected CRC" is the REMAINDER from the whole computation.
Also as a consequence of this, if you tack the "Expected CRC" on the END, and complete the computation the remainder with drop to ZERO, as it now "divides" perfectly.
EXPECTED_CRC = DATA % POLYNOMIAL
(DATA + EXPECTED_CRC) / POLYNOMIAL == 0, where data is unmodified / as expected
Math done in the Galois / FInite Field
https://en.wikipedia.org/wiki/Finite_field
Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..