mokeyjay
V2EX  ›  问与答

SHA1 相比 MD5 有什么优势吗?

  •  
  •   mokeyjay · Jun 12, 2018 · 26016 views
    This topic created in 2919 days ago, the information mentioned may be changed or developed.

    我没记错的话,以前看到的文件下载一般会配上 MD5 值,但是近几年似乎都变成 SHA1 居多了。虽然作用是相同的,但为什么用 SHA1 的越来越多了呢?(在我看到的里面

    16 replies    2018-06-21 13:54:11 +08:00
    idhrwb01296
        1
    idhrwb01296  
       Jun 12, 2018 via Android
    md5 容易碰撞
    ooh
        2
    ooh  
       Jun 12, 2018
    更安全,为什么不 Google 一下呢
    qq316107934
        3
    qq316107934  
       Jun 12, 2018 via Android
    现在防碰撞很多是 SHA1+MD5
    mokeyjay
        4
    mokeyjay  
    OP
       Jun 12, 2018
    @ooh #2 简单 google 了一下都是些长篇大论,没有简单一两句话表达的
    dlsflh
        5
    dlsflh  
       Jun 12, 2018 via Android
    md5 前段时间不是被 Google 破解了吗
    v2gba
        6
    v2gba  
       Jun 12, 2018   ❤️ 1
    dobelee
        7
    dobelee  
       Jun 12, 2018 via Android
    sha1 摘要比 md5 要长,前者 160bit,后者 128bit,因此 sha1 碰撞的难度略高于 md5,但是计算时长也增加了三分之一。
    (以上是道听途说,本人没有验证过🤷)
    Antidictator
        8
    Antidictator  
       Jun 12, 2018 via iPhone
    @dlsflh 不是 sha1 吗😂😂😂
    neighbads
        9
    neighbads  
       Jun 12, 2018 via Android
    都是哈希算法 安全性更高了 ,更高的还有 sha224 sha256 sha512 以及咱们国家自己的 sm3
    Kobayashi
        10
    Kobayashi  
       Jun 12, 2018 via Android
    用来验证下载文件,又不是用来加密,能有个毛线的区别。
    vegito2002
        11
    vegito2002  
       Jun 12, 2018
    微软 Flame attack 了解一些: https://threatpost.com/microsoft-details-flame-hash-collision-attack-060612/76658/

    即使是用来验证, 也是可能搞事情的
    breeswish
        12
    breeswish  
       Jun 13, 2018
    md5 几分钟就能碰撞出来了,没有安全性。sha1 目前碰撞难度也不是那么高,不再安全。请用 sha256。
    presoul
        13
    presoul  
       Jun 13, 2018 via Android
    验证下载文件完整性 ...
    感受不到区别
    duumvir
        14
    duumvir  
       Jun 13, 2018
    求安全准确的话,用 sha256
    凑合的用的话,md5
    其实 md5 和 sha1 严格的说应该淘汰了。
    jininij
        15
    jininij  
       Jun 13, 2018 via iPhone
    另外说一下。一般所说的 sha256,是 sha2 的一个子集:即输出长度为 256 位的 sha2。同样的,还有 sha224, sha384,sha512。sha2 目前没有明显漏洞。但新的软件建议使用新的 sha3。有更高的性能和安全性。

    一个安全的哈希算法,假如生成的结果是 128 位,那么要猜它的一个原文,需要 2^128 次尝试。构造一次碰撞(生日碰撞),需要尝试 2^64 次。
    如果需要的次数少于这个值,那么这个算法就被宣告破解。

    md5 和 sha1 都是被破解了的。sha1 还是上个世纪的作品。md5 的碰撞复杂度只有 2^20,sha1 的碰撞复杂度约 2^63。
    这个数的平方——构造一个有指定哈希结果的原文的复杂度——仍然很大。几乎很难被利用。在某些场景下仍然勉强可以用。

    但还是建议使用更新的 sha2 或者 sha3。同时,sha2,sha3 的输出长度都是可调整的。sha3 还有更多可配置的安全特性,可以保证你的算法安全。
    l2dy
        16
    l2dy  
       Jun 21, 2018
    @MrGba2z 这个图有点老,现在已经有针对 SHA1 的 SHAttered 攻击了[1]。所以现在的趋势是转向 SHA-256 或更强的,例如 PyPI 以前只提供 MD5,现在改成 SHA-256 了[2]; pip 的验证哈希模式不支持较弱的 md5, sha1, sha224,只支持 SHA-256 或更强的哈希算法[3]。

    [1]: https://shattered.io/
    [2]: https://pypi.org/project/pip/#files
    [3]: https://pip.pypa.io/en/stable/reference/pip_install/#hash-checking-mode
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5915 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 80ms · UTC 02:40 · PVG 10:40 · LAX 19:40 · JFK 22:40
    ♥ Do have faith in what you're doing.