簡介
核心概念
CRC是一種錯誤檢測算法,為數據產生32位的「數字指紋」。如同文件的防偽封條,任何數據改動都會導致CRC值完全不同。
多項式
基於有限域中的多項式除法。標準CRC-32使用多項式:
這裡的上標表示位置索引而非數學次方,對應33位二進制模式,寫出來就是100000100110000010001110110110111
計算
計算流程
將我們要傳的數據變成二進位並在後面添加32個零位,將此數除以上面多項式,取得32位餘數作為CRC值(透過模操作加速除法運算)
使用方式
將CRC值放到封包中數據後面。接收方分離數據和CRC值,重新計算數據的CRC值,然後比較兩個CRC值。相同表示數據完整,不同表示數據已損壞或被篡改。