我試圖模仿用於創建CRC在PNG文件的功能,我使用的是AUTODIN II多項式和源代碼:
http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/bsd/libkern/crc32.cCRC32計算對於PNG塊不符合真正的
我的測試都是針對IHDR塊的,所以我的參數是:
crc - 0xffffffff和0(均已被建議)
buff - IHDR塊的類型的地址。
長度 - IHDR塊的長度+4(塊大小的數據長度+類型的長度)
我打印了計算出的二進制CRC,並將其與塊的實際CRC進行比較。我可以看到沒有相似之處(小大端,顛倒位,異或等)。
這是IHDR組塊(十六進制格式)的數據:
長度(大端):D0 00 00 00(13)
類型:49 48 44 52
數據:00 00 01 77 00 00 01 68 08 06 00 00 00
現有CRC:B0 BB 40的AC
如果有人能告訴我爲什麼我的計算是關閉,或者給我一個CRC32功能,將工作,我將不勝感激。 謝謝你!
我看不到13個字節的數據* *。無論如何,您需要在CRC32計算中包含類型ID('IHDR'),也就是說,您需要將17個字節的緩衝區傳遞給'crc32'函數。 – Jigsore
@Jigsore,我糾正了數據,謝謝。我誤解了我的輸出。 – Alter