V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
543400
V2EX  ›  问与答

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

  •  
  •   543400 · 2015-10-22 17:49:56 +08:00 · 5653 次点击
    这是一个创建于 3351 天前的主题,其中的信息可能已经有所发展或是发生改变。
    MD5 SHA1 CRC32 准?

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

    有更先进的方式吗?

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

    sha1 和 crc32 不清楚。
    liberize
        8
    liberize  
       2015-10-22 21:09:23 +08:00   ❤️ 1
    cmxz
        9
    cmxz  
       2015-10-22 21:52:10 +08:00
    @mahone3297 在一些不影响程序逻辑的地方构造填充数据即可实现
    VYSE
        10
    VYSE  
       2015-10-22 22:33:05 +08:00
    同时校验 MD5 和 SHA1 ,同时碰撞的概率。。。。
    JamesRuan
        11
    JamesRuan  
       2015-10-22 22:46:05 +08:00
    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  
       2015-10-22 22:46:57 +08:00
    无损压缩,然后对比压缩后的值,肯定不会碰撞
    543400
        13
    543400  
    OP
       2015-10-22 22:47:13 +08:00
    @JamesRuan 有点难理解 我需要好好研习一下 不过还是谢谢你
    gamexg
        14
    gamexg  
       2015-10-22 22:47:44 +08:00
    还有数字签名,具体的细节就不知道了。
    一般 windows 下大的公司提供的软件安装包都有签名了。
    右键=>属性=>数字签名。
    543400
        15
    543400  
    OP
       2015-10-22 22:49:41 +08:00
    其实我最后想表达的是,网上有 md5 CRC32 的修改器 不过 SHA1 就没搜到
    gamexg
        16
    gamexg  
       2015-10-22 22:49:59 +08:00
    其实数字签名也是 hash 的一种实现。
    543400
        17
    543400  
    OP
       2015-10-22 22:50:35 +08:00
    @gamexg 好像变来变去都是哈希
    JamesRuan
        18
    JamesRuan  
       2015-10-22 22:57:38 +08:00
    @543400 简单说, md5 sha1 除了检验文件不同外,还能抵抗故意构造相同的 digest ,而 CRC 除了检验文件不同外,只能抵抗随机错误。
    543400
        19
    543400  
    OP
       2015-10-22 22:59:52 +08:00
    @JamesRuan 原来如此 但是网上那些 md5 sha1 修改器 要是修改到指定的值 那么 CRC 也会跟着变化?
    lightening
        20
    lightening  
       2015-10-22 23:10:46 +08:00
    给定一个 MD5 找到一个碰撞是可能的。但是这个碰撞的内容完全不可控。一个几 GB 的文件,很有可能找到一个几字节的文件和它 MD5 相同。基本不可能做到两个类似的文件 MD5 相同。
    lightening
        21
    lightening  
       2015-10-22 23:11:53 +08:00
    @543400 什么叫 MD5 修改器啊, MD5 是你用自己电脑上的 MD5 计算软件算出来的,怎么改?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3089 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:46 · PVG 20:46 · LAX 04:46 · JFK 07:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.