zoukankan      html  css  js  c++  java
  • CRC与MD5的异同


    php中CRC32的用法:

    crc32 — 计算一个字符串的 crc32 多项式

    生成 string 参数的 32 位循环冗余校验码多项式……:

    这句话从英文翻译过来的,不正确,准确的说应该是这么理解:

    以32位循环冗余校验多项式算法,来计算一个字符串,返回一个(可能带符号的)整数。

    使用方法:

    这个函数的功能类似于md5算法、sha1算法加密。这个函数的使用过程中,需要多考虑取返回的整数的绝对值就可以了。

    至于如何能做到检查传输的数据是否完整:

    参考md5的常见使用场景。

    32位循环冗余校验多项式:这个是一个数学算法,在php的源码内可以看到。你可以当作他是一个md5算法的数字版。

    经常有人问,说CRC、MD5、SHA1都是计算一个校验值的,到底有何区别

    相同点:

    CRC、MD5、SHA1都是通过对数据进行计算,来生成一个校验值,该校验值用来校验数据的完整性。

    不同点:

    1. 算法不同。CRC采用多项式除法,MD5和SHA1使用的是替换、轮转等方法;

    2. 校验值的长度不同。CRC校验位的长度跟其多项式有关系,一般为16位或32位;MD5是16个字节(128位);SHA1是20个字节(160位);

    3. 校验值的称呼不同。CRC一般叫做CRC值;MD5和SHA1一般叫做哈希值(Hash)或散列值;

    4. 安全性不同。这里的安全性是指检错的能力,即数据的错误能通过校验位检测出来。CRC的安全性跟多项式有很大关系,相对于MD5和SHA1要弱很多;MD5的安全性很高,不过大概在04年的时候被山东大学的王小云破解了;SHA1的安全性最高。

    5. 效率不同,CRC的计算效率很高;MD5和SHA1比较慢。

    6. 用途不同。CRC一般用作通信数据的校验;MD5和SHA1用于安全(Security)领域,比如文件校验、数字签名等。
  • 相关阅读:
    Maven 环境的配置
    zTree的简单例子
    plsql免安装客户端的配置
    HDU 1232 畅通工程
    HDU 5698 瞬间移动
    Codeforces 1015E1 Stars Drawing (Easy Edition)
    Codeforces 784B Santa Claus and Keyboard Check
    Codeforces 500C New Year Book Reading
    NSarray 赋值 拷贝 等问题记录
    UINavigationController 操作记录
  • 原文地址:https://www.cnblogs.com/jinhengyu/p/7516863.html
Copyright © 2011-2022 走看看