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

相关文章
相关标签/搜索