我找到了一个代码来反转CRC32,但我不知道它是如何工作的,因为我在编程方面不是那么好,我刚开始.我只想比较2个文件,旧的和新的,然后在新的修复中CRC32在文件的末尾添加4个字节,因此2个文件将具有相同的CRC32.这是代码,在C#中:
public class Crc32
{
public const uint poly = 0xedb88320;
public const uint startxor = 0xffffffff;
static uint[] table = null;
static uint[] revtable = null;
public void FixChecksum(byte[] bytes, int length, int fixpos, uint wantcrc)
{
if (fixpos + 4 > length) return;
uint crc = startxor;
for (int i = 0; i < fixpos; i++) {
crc = (crc >> 8) ^ table[(crc ^ bytes[i]) & 0xff];
}
Array.Copy(BitConverter.GetBytes(crc), 0, bytes, fixpos, 4);
crc = wantcrc ^ …Run Code Online (Sandbox Code Playgroud)