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

SHA1 相比 MD5 有什么优势吗?

  •  
  •   mokeyjay · 2018-06-12 22:25:37 +08:00 · 14844 次点击
    这是一个创建于 541 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    即使是用来验证, 也是可能搞事情的
        12
    breeswish   2018-06-13 00:04:48 +08:00
    md5 几分钟就能碰撞出来了,没有安全性。sha1 目前碰撞难度也不是那么高,不再安全。请用 sha256。
        13
    presoul   2018-06-13 07:09:33 +08:00 via Android
    验证下载文件完整性 ...
    感受不到区别
        14
    duumvir   2018-06-13 14:47:09 +08:00
    求安全准确的话,用 sha256
    凑合的用的话,md5
    其实 md5 和 sha1 严格的说应该淘汰了。
        15
    jininij   2018-06-13 16:53:18 +08:00 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 还有更多可配置的安全特性,可以保证你的算法安全。
        16
    l2dy   2018-06-21 13:54:11 +08:00
    @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
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3752 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 01:14 · PVG 09:14 · LAX 17:14 · JFK 20:14
    ♥ Do have faith in what you're doing.