V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
543400
V2EX  ›  问与答

哈希值是校验文件是否为原版的唯一方式?

  •  
  •   543400 · Oct 22, 2015 · 6047 views
    This topic created in 3845 days ago, the information mentioned may be changed or developed.
    MD5 SHA1 CRC32 准?

    好像网上都是用这种方式校验文件惹

    有更先进的方式吗?

    能够保证文件内容改动 而 MD5 SHA1 CRC32 不变的方法?
    21 replies    2015-10-22 23:11:53 +08:00
    xfspace
        1
    xfspace  
       Oct 22, 2015 via Android
    MD5 能碰撞,一般小黑阔不搞这个。。。
    SHA1 貌似也能碰出来,
    mahone3297
        2
    mahone3297  
       Oct 22, 2015
    @xfspace 光碰出来也没用,还要你下的这个东西,用起来,像原版一样。这样的需求,基本不可能实现吧。。。
    xfspace
        3
    xfspace  
       Oct 22, 2015
    @mahone3297 在原版种个木马,把原版的 MD5 碰出来,怎么没用?
    aivier
        4
    aivier  
       Oct 22, 2015
    @xfspace 多大的软件,碰你 →_→
    boter
        5
    boter  
       Oct 22, 2015
    还有 PGP 校验签名的方式,不过都不是很了解原理,只是会用,有人解释下更好
    xfspace
        6
    xfspace  
       Oct 22, 2015 via Android
    @aivier Xcode 那个事件,如果作者还把 MD5 碰上了。。。。。。。。。。。。。。。。
    virusdefender
        7
    virusdefender  
       Oct 22, 2015
    保证文件不同而 MD5 一样已有先例,但是碰撞出来的文件同时具有特定的功能还不太可能。

    sha1 和 crc32 不清楚。
    liberize
        8
    liberize  
       Oct 22, 2015   ❤️ 1
    cmxz
        9
    cmxz  
       Oct 22, 2015
    @mahone3297 在一些不影响程序逻辑的地方构造填充数据即可实现
    VYSE
        10
    VYSE  
       Oct 22, 2015
    同时校验 MD5 和 SHA1 ,同时碰撞的概率。。。。
    JamesRuan
        11
    JamesRuan  
       Oct 22, 2015
    CRC32 不是校验文件完整性的。

    md5 、 sha1 都是 digest algorithm ,用于用很小的代价比较两段数据是否“不同”。 digest 不同的,一定不同, digest 相同的,有非常小的概率不同。

    而 crc 是 error-ditecting code ,用于发现由于随机错误导致的数据失真。 CRC 不为 0 的,说明一定有错误发生,而 CRC 为 0 的,则不一定是没有数据错误。( Typically an n-bit CRC applied to a data block of arbitrary length will detect any single error burst not longer than n bits and will detect a fraction 1 − 2^{-n} of all longer error bursts )

    两者有相似性,都是把一个更大的空间 map 到一个很小的空间,不同点是,要故意构造相同的 md5 digest 和 sha1 digest 是个难题,但构造 CRC 相对就很容易了;前者有很强的防故意构造能力(虽然 md5 已经被王小云攻破,可以比设计地更容易构造相同的 digest ),而后者只具有有限的抗随机错误的能力。
    zhujinliang
        12
    zhujinliang  
       Oct 22, 2015
    无损压缩,然后对比压缩后的值,肯定不会碰撞
    543400
        13
    543400  
    OP
       Oct 22, 2015
    @JamesRuan 有点难理解 我需要好好研习一下 不过还是谢谢你
    gamexg
        14
    gamexg  
       Oct 22, 2015
    还有数字签名,具体的细节就不知道了。
    一般 windows 下大的公司提供的软件安装包都有签名了。
    右键=>属性=>数字签名。
    543400
        15
    543400  
    OP
       Oct 22, 2015
    其实我最后想表达的是,网上有 md5 CRC32 的修改器 不过 SHA1 就没搜到
    gamexg
        16
    gamexg  
       Oct 22, 2015
    其实数字签名也是 hash 的一种实现。
    543400
        17
    543400  
    OP
       Oct 22, 2015
    @gamexg 好像变来变去都是哈希
    JamesRuan
        18
    JamesRuan  
       Oct 22, 2015
    @543400 简单说, md5 sha1 除了检验文件不同外,还能抵抗故意构造相同的 digest ,而 CRC 除了检验文件不同外,只能抵抗随机错误。
    543400
        19
    543400  
    OP
       Oct 22, 2015
    @JamesRuan 原来如此 但是网上那些 md5 sha1 修改器 要是修改到指定的值 那么 CRC 也会跟着变化?
    lightening
        20
    lightening  
       Oct 22, 2015
    给定一个 MD5 找到一个碰撞是可能的。但是这个碰撞的内容完全不可控。一个几 GB 的文件,很有可能找到一个几字节的文件和它 MD5 相同。基本不可能做到两个类似的文件 MD5 相同。
    lightening
        21
    lightening  
       Oct 22, 2015
    @543400 什么叫 MD5 修改器啊, MD5 是你用自己电脑上的 MD5 计算软件算出来的,怎么改?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2440 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 04:51 · PVG 12:51 · LAX 21:51 · JFK 00:51
    ♥ Do have faith in what you're doing.