iOS裏的crc校驗問題

首先推薦一篇文章,下面的的文章對crc解釋的很好:
http://www.javashuo.com/article/p-gemyxdyn-ds.htmlgit

crc校驗算法的本質就是對一個2進制數據,用規定好的多項式值,進行特殊的除法,最後的餘數就是crc校驗值. 咱們的算法,就是爲了獲得這個餘數,對於商,並不感興趣.
在這個特殊的除法裏,進行的異或運算就是不同凡響的地方.github

最近在程序中涉及到下載文件的校驗,用的是自定義的crc算法,不是傳統的算法.
在它到算法中,每8bit要調用一次函數去計算一次src,而且在處理每bit的計算時,比傳統算法要多2次與運算, 對於30兆的文件,在iphone6上,須要8秒左右才能完成! 效率十分的低下.
也許從數學角度,它用的算法更能發現數據錯誤.算法

其實若是用傳統的crc算法並不會慢,理論上crc的效率應該比md5的要高! 算法實現也很簡單,只有一小段代碼,github上有很多.服務器

另外,和md5計算不一樣,crc校驗碼生成的算法參數十分多,單單是多項式選擇就好多種,不一樣的參數,生成的結果就不一樣,服務器和手機端的算法要統一,否則生成的crc校驗碼不一致.iphone

相關文章
相關標籤/搜索