zoukankan      html  css  js  c++  java
  • iOS里的crc校验问题

    首先推荐一篇文章,下面的的文章对crc解释的很好:
    https://blog.csdn.net/liyuanbhu/article/details/7882789

    crc校验算法的本质就是对一个2进制数据,用规定好的多项式值,进行特殊的除法,最后的余数就是crc校验值. 我们的算法,就是为了得到这个余数,对于商,并不感兴趣.
    在这个特殊的除法里,进行的异或运算就是与众不同的地方.

    最近在程序中涉及到下载文件的校验,用的是自定义的crc算法,不是传统的算法.
    在它到算法中,每8bit要调用一次函数去计算一次src,并且在处理每bit的计算时,比传统算法要多2次与运算, 对于30兆的文件,在iphone6上,需要8秒左右才能完成! 效率十分的低下.
    也许从数学角度,它用的算法更能发现数据错误.

    其实如果用传统的crc算法并不会慢,理论上crc的效率应该比md5的要高! 算法实现也很简单,只有一小段代码,github上有不少.

    另外,和md5计算不同,crc校验码生成的算法参数十分多,单单是多项式选择就好多种,不同的参数,生成的结果就不同,服务器和手机端的算法要统一,不然生成的crc校验码不一致.

  • 相关阅读:
    计蒜客38228 Max answer 单调栈 + 线段树
    Codeforces 103D Time to Raid Cowavans 分块
    Poj 2352 Stars
    HDU 6203 ping ping ping LCA + 贪心
    redis——数据库发展
    数据库拆分
    java基础算法
    docker部署redis集群
    docker网络
    DockerFile
  • 原文地址:https://www.cnblogs.com/breezemist/p/10408028.html
Copyright © 2011-2022 走看看