深入了解crc32演算法

2021-04-15 01:45:57 字數 709 閱讀 5340

由於專案需要,解決乙個流**檔案的crc32校驗碼。網上查了很多的資料,發現了此校驗碼和生成多項式以及演算法本身都有關係。對於不同型別的檔案所使用的多項式以及演算法不同,對於不同的生成多項式所生成的crc32表不同,不同的演算法也會產生不同的結果。下面分模擬較兩種不同用途的crc32校驗碼的計算方法。

1、普通檔案(如壓縮檔案)的crc32校驗碼計算方法:

生成多項式採用0xedb88320,所生成的表為:

/* this polynomial ( 0xedb88320l) does generate the same crc values as zmodem and pkzip

*/static const u_int32_t crc32tab = ;

所使用的演算法:

u_int32_t ssh_crc32(const u_char *buf, u_int32_t size)

2、**檔案(如mpeg)的crc32校驗碼計算方法:

生成多項式採用0x04c11db7,所生成的表為:

/* this polynomial (0x04c11db7) is used at: autodin ii, ethernet, & fddi

*/static u_int32_t crc32table[256] = ;

所使用的演算法是:

u_int32_t  mpeg_crc32(const u_char *data, int len)

CRC32演算法實現

crc32 檢錯能力極強,開銷小,易於用編碼器及檢測電路實現。從其檢錯能力來看,它所不能發現的錯誤的機率僅為0.0047 以下。從效能上和開銷上考慮,均遠遠優於奇偶校驗及算術和校驗等方式。因而,在資料儲存和資料通訊領域,crc無處不在 著名的通訊協議x.25的fcs 幀檢錯序列 採用的是crc cc...

CRC32演算法詳細推導(1)

from 作為blog再次發出來,詳細描述一下crc32演算法的推導過程。crc 演算法的數學基礎就不再多囉嗦了,到處都是,簡單提一下。它是以 gf 2 多項式算術為數學基礎的,gf 2 多項式中只有乙個變數 x 其係數也只有 0 和 1 比如 1 x 6 0 x 5 1 x 4 0 x 3 0 x...

CRC32演算法詳細推導(3)

看起來我們已經得到 crc 32 演算法的最終形式了,可是 可是在實際的應用中,資料傳輸時是低位先行的 對於乙個位元組 byte 來講,傳輸將是按照 b1,b2,b8 的順序。而我們上面的演算法是按照高位在前的約定,不管是 reg還是 g x g32,g31,g1 b8,b7,b1 r32,r31,...