mokeyjay
V2EX  ›  问与答

SHA1 相比 MD5 有什么优势吗?

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

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

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

    即使是用来验证, 也是可能搞事情的
    breeswish
    breeswish
    Jun 13, 2018
    12
    md5 几分钟就能碰撞出来了,没有安全性。sha1 目前碰撞难度也不是那么高,不再安全。请用 sha256。
    presoul
    presoul
    Jun 13, 2018 via Android
    13
    验证下载文件完整性 ...
    感受不到区别
    duumvir
    duumvir
    Jun 13, 2018
    14
    求安全准确的话,用 sha256
    凑合的用的话,md5
    其实 md5 和 sha1 严格的说应该淘汰了。
    jininij
    jininij
    Jun 13, 2018 via iPhone
    15
    另外说一下。一般所说的 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
    l2dy
    Jun 21, 2018
    16
    @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   ·   Privacy   ·   Solana   ·   1199 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 16:09 · PVG 00:09 · LAX 08:09 · JFK 11:09
    ♥ Do have faith in what you're doing.