我知道SHA-256比MD5更受安全等方面的青睐,但是,如果我使用的方法只检查文件的完整性(也就是说,与密码加密无关等),那么使用SHA-256的任何优点?
由于MD5是128位且SHA-256是256位(因此大两倍)......
加密需要两倍的时间吗?
如果时间不重要,就像在备份程序中一样,只需要文件完整性,是否有人会针对不同的算法反对MD5,或者甚至提出不同的技术?
< / LI>使用MD5会产生校验和吗?
答案 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)
每个答案似乎都暗示您需要使用安全哈希来完成这项工作,但所有这些都被调整得很慢,迫使暴力攻击者拥有大量的计算能力,并且根据您的需要,这可能不是最好的溶液
有一些算法专门用于尽可能快地散列文件以检查完整性和比较(murmur
,XXhash
...)。显然,这些不是为安全性而设计的,因为它们不满足安全散列算法(即随机性)的要求,但对于大消息具有低冲突率 。如果您不是在寻找安全性而是速度,这个功能使它们成为理想选择。
这个算法和比较的例子可以在这个优秀的答案中找到:Which hashing algorithm is best for uniqueness and speed?。
例如,我们在Q&amp; A网站上使用murmur3
来对用户上传的图片进行哈希处理,因此即使用户在多个答案中上传相同的图片,我们也只会存储一次。
答案 3 :(得分:8)
总而言之,除了文件名之外,我还说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)
快乐哈希!