так это же почти из первого св-ва следует и методов рассчета. запишем так:
crc(0xFFFF, 12 34 56 aa bb cc 23 45) = 2B9D (0xFFFF - это стартовое значение crc)
так как crc выполняется последовательно, то
crc(0xFFFF, 12 34 56 aa bb cc 23 45) = crc ( crc(0xFFFF, 12 34 56), aa bb cc 23 45)
смотрим
https://en.wikiped …lic_redundancy_checks, пунктик The shift register may be initialized with ones instead of zeroes.
Т.е. получаем {\displaystyle M(x)\cdot x^{n}+\sum _{i=m}^{m+n-1}x^{i}=Q(x)\cdot G(x)+R(x)} M(x) \cdot x^n + \sum_{i=m}^{m+n-1} x^i = Q(x) \cdot G(x) + R (x) (таже самая формула, что и по ссылке, не знаю как отобразится)
где у нас M(x)*x^n - исходные данные (в нашем случае aa bb cc 23 45),
а второе слагаемое - это crc(0xFFFF, 12 34 56)2^m, где m - длина M(x)
так как M(x)*x^n mod G(x) = 0, т.к. M(x) содержит в конце свой CRC16, то на резултирующий вариант crc влияет только второе слагаемое и длина m.
во втором случае аналогично
Т.е. если у нас в crc встроен уже пакет сrc, то влияние оказывает только его длина (у пакетов со встроенным пакетом одинаковой длины crc будет одинакова ).