SHA-256或MD5用于文件完整性

Dav*_*ave 59 hash md5 file sha256

我知道,SHA-256优于MD5的安全性等,但是,如果我用一种方法来只检查文件的完整性(即,无关的密码加密等),是否有任何优势使用SHA-256?

由于MD5是128位而SHA-256是256位(因此大两倍)......

  1. 加密需要两倍的时间吗?

  2. 如果时间不重要,就像在备份程序中一样,文件完整性就是所需要的,那么有人会反对MD5使用不同的算法,甚至提出不同的技术吗?

  3. 使用MD5产生校验和吗?

dan*_*n78 63

SHA256和MDA5都是散列算法.它们获取输入数据,在本例中为您的文件,并输出256/128位数.这个数字是校验和.没有加密发生,因为无限数量的输入可以产生相同的散列值,尽管实际上碰撞很少.

根据这个答案,SHA256比MD5需要更多的时间来计算.

另外,我会说MD5可能适合您的需要.

  • @DaveRook你还能解密这条消息吗? (8认同)
  • @dave我认为这个主题有点混乱,因为SHA被称为加密哈希.这意味着(我远非专家)是你可以用它来哈希密码.这样,如果攻击者获取了您的用户密码文件,他就无法使用哈希重建原始密码.加密的不同之处在于它是可逆的. (5认同)

Dan*_* S. 15

要1):是的,在大多数CPU上,SHA-256的速度仅为MD5的40%.

2):在这种情况下,我会争论与MD5不同的算法.我肯定更喜欢一种被认为安全的算法.但是,这更像是一种感觉.其中,该事项将是相当构建不是现实的,例如,如果你的备份系统遇到在基于MD5证书的攻击的例子情况下的情况下,你很可能有不同的数据,但相同的MD5校验码这样的例子两个文件.对于其他情况,这没关系,因为MD5校验和实际上只有在故意激发时才会发生冲突(=不同数据的校验和相同).我不是各种散列(校验和生成)算法的专家,所以我不能建议另一种算法.因此,这部分问题仍然存在.建议进一步阅读的是加密哈希函数 -维基百科上的文件或数据标识符.此外,该页面还有一个加密哈希算法列表.

3):MD5是一种计算校验和的算法.然后使用该算法计算的校验和称为MD5校验和.


Mar*_*ent 11

每个答案似乎都表明您需要使用安全哈希来完成这项工作,但所有这些都被调整得很慢,迫使暴力攻击者拥有大量的计算能力,并且根据您的需要,这可能不是最佳解决方案.

有一些算法专门用于尽可能快地散列文件,以检查完整性和比较(murmur,XXhash...).显然,这些不是为安全性而设计的,因为它们不满足安全散列算法(即随机性)的要求,但对于大消息具有低冲突率.如果您不是在寻找安全性而是速度,这个功能使它们成为理想选择.

这个算法和比较的例子可以在这个优秀的答案中找到:哪种哈希算法最适合于唯一性和速度?.

例如,我们在问答网站上使用murmur3哈希用户上传的图像,因此即使用户在多个答案中上传相同图像,我们也只会存储一次.


Gen*_*ock 9

  1. 不,它不那么快但不是那么慢
  2. 对于备份程序,可能需要比MD5更快的速度

总而言之,我会说MD5除了文件名之外绝对安全.由于它的大小,SHA-256会变得更慢,更难处理.

您也可以使用比MD5更安全的东西而没有任何问题.如果没有人试图破解你的文件完整性,这也是安全的.


jse*_*ars 7

基础MD5算法不再被认为是安全的,因此md5sum非常适合在非安全相关的情况下识别已知文件,如果文件有可能被故意和恶意篡改,则不应该依赖它.在后一种情况下,强烈建议使用更新的散列工具,如sha256sum.

因此,如果您只是想检查文件损坏或文件差异,那么当文件的来源可信时,MD5就足够了.如果您希望验证来自不受信任来源的文件的完整性,或通过未加密的连接验证来自受信任来源的文件的完整性,则MD5是不够的.

另一位评论者指出,Ubuntu和其他人使用MD5校验和.除了MD5之外,Ubuntu已经转移到PGP和SHA256,但是更难以找到更强大的验证策略的文档.有关更多详细信息,请参见HowToSHA256SUM页面.


dha*_*urt 6

  1. 是的,在大多数 CPU 上,SHA-256 比 MD5 慢两到三倍,但主要不是因为它的哈希更长。请在此处查看其他答案以及此 Stack Overflow 问题的答案。
  2. 这是一个不适合 MD5 的备份方案:
    • 您的备份程序会散列每个要备份的文件。然后它通过哈希存储每个文件的数据,所以如果你备份同一个文件两次,你最终只会得到它的一个副本。
    • 攻击者可以使系统备份他们控制的文件。
    • 攻击者知道他们想要从备份中删除的文件的 MD5 哈希值。
    • 然后攻击者可以使用 MD5 的已知弱点来制作一个新文件,该文件与要删除的文件具有相同的哈希值。备份该文件时,它将替换要删除的文件,并且该文件的备份数据将丢失。
    • 这个备份系统可以通过不替换之前遇到过哈希值的文件来稍微加强(并提高效率),但是攻击者可以通过抢先备份一个特殊构造的伪造文件来防止备份具有已知哈希值的目标文件具有相同哈希值的文件。
    • 显然,大多数系统,备份和其他系统,都不满足这种攻击可行的必要条件,但我只想举一个例子,说明 SHA-256 比 MD5 更可取的情况。您正在创建的系统是否属于这种情况,不仅仅取决于 MD5 和 SHA-256 的特性。
  3. 是的,像 MD5 和 SHA-256 生成的加密哈希是一种校验和。

哈希快乐!


Sai*_*akR 5

从技术上讲,MD5比SHA256更快,因此仅在验证文件完整性时,它就会足够且性能更好。

您可以签出以下资源:

  • @DaveRook另外,如果您寻找Sun,Ubuntu等著名网站的周围,您可能会注意到它们提供了MD5校验和以确保文件完整性。这可以支持其对此类任务的价值。 (3认同)