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

时间:2013-01-03 13:19:08

标签: file hash md5 sha256

我知道SHA-256比MD5更受安全等方面的青睐,但是,如果我使用的方法只检查文件的完整性(也就是说,与密码加密无关等),那么使用SHA-256的任何优点?

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

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

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

    < / LI>
  3. 使用MD5会产生校验和吗?

7 个答案:

答案 0 :(得分:59)

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

根据this answer,SHA256比MD5需要更多的时间来计算。

副手,我会说MD5可能适合你需要的东西。

答案 1 :(得分:14)

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

至2): 在这种情况下,我会争论与MD5不同的算法。我肯定更喜欢一种被认为安全的算法。但是,这更像是一种感觉。这种情况的构造比实际的要好,例如如果您的备份系统遇到基于MD5的证书的攻击示例,则在这样的示例中您可能有两个文件具有不同的数据,但MD5校验和相同。对于其他情况,这没关系,因为MD5校验和实际上只有在故意激发时才会发生冲突(=不同数据的校验和相同)。 我不是各种散列(校验和生成)算法的专家,所以我不能建议另一种算法。因此,这部分问题仍然存在。 建议在维基百科上进一步阅读Cryptographic Hash Function - File or Data Identifier。此外,该页面还有一个加密哈希算法列表。

至3): MD5是一种计算校验和的算法。使用此算法计算的校验和称为MD5校验和。

答案 2 :(得分:10)

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

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

这个算法和比较的例子可以在这个优秀的答案中找到:Which hashing algorithm is best for uniqueness and speed?

例如,我们在Q&amp; A网站上使用murmur3来对用户上传的图片进行哈希处理,因此即使用户在多个答案中上传相同的图片,我们也只会存储一次。

答案 3 :(得分:8)

  1. 不,它不那么快但不是那么慢
  2. 对于备份程序,可能需要比MD5更快的东西。
  3. 总而言之,除了文件名之外,我还说MD5是绝对安全的。由于它的大小,SHA-256会变得更慢,更难处理。

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

答案 4 :(得分:7)

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

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

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

答案 5 :(得分:4)

技术上认可MD5比SHA256更快,因此只需验证文件完整性就足够了,性能更好。

您可以查看以下资源:

答案 6 :(得分:0)

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