ok troche rozkminiłem nie wiem czy dobrze :)
zerowa pozycja CRC Table to 00000000 a wiec pod czas liczenia crc na ostatnim bajcie pliku wstawić taki bajt żeby CrcOld xor bajt dał 0 czyli bajt=CrcOld to CRCTable[CrcOld xor bajt] zwraca 0000000 a za czym idzie dalsza część algo liczacego CRC wyzeruje pierwsze 8 bitów CRC jeśli to powtorzymy to wyzerujemy CRC32 a dalej można wkleić niezmodyfikowany plik i CRC32 bedzie takie same jak przed modyfikacją ale plik 2 razy więklszy :)
Moje rozkminianie :) :
NoweCRC := CRCTable[CrcOld xor bajt] xor ((CrcOld shr 8) and $00FFFFFF)
$0000000 xor ((CrcOld shr 8) and $00FFFFFF - zeruje pierwsze 8 bitów :
01001001 11111111 11000001 01111001 CRCOLD (wejściowa)
00000000 01001001 11111111 11000001 CRCOLD shr 8
00000000 00000000 00000000 00000000 zerowa pozycja z tablicy CRC
00000000 01001001 11111111 11000001 wynik $0000000 xor ((CrcOld shr 8)
00000000 11111111 11111111 11111111 $00FFFFFF
00000000 01001001 11111111 11000001 and (i wten sposob wyzerowałem pizrwsze 8 bitów:) )
00000000 01001001 11111111 11000001 CRCOLD
00000000 00000000 01001001 11111111 CRCOLD shr 8
00000000 00000000 00000000 00000000 zerowa pozycja z tablicy CRC
00000000 00000000 01001001 11111111 wynik $0000000 xor ((CrcOld shr 8)
00000000 11111111 11111111 11111111 $00FFFFFF
00000000 00000000 01001001 11111111 and (i wten sposob wyzerowałem kolejne 8 bitów :) )</image>