我知道SHA-256在安全性等方面比MD5更受青睐,但是,如果我只是用一种方法来检查文件的完整性(也就是与密码加密等无关),使用SHA-256有什么优势吗?
由于MD5是128位而SHA-256是256位(因此大小是MD5的两倍)...
计算哈希值是否需要花费多达两倍的时间?
在时间不紧迫的情况下,比如备份程序中,只需要文件完整性,有人会反对使用MD5并提出其他算法,甚至建议使用不同的技术吗?
使用MD5是否会产生校验和?
我知道SHA-256在安全性等方面比MD5更受青睐,但是,如果我只是用一种方法来检查文件的完整性(也就是与密码加密等无关),使用SHA-256有什么优势吗?
由于MD5是128位而SHA-256是256位(因此大小是MD5的两倍)...
计算哈希值是否需要花费多达两倍的时间?
在时间不紧迫的情况下,比如备份程序中,只需要文件完整性,有人会反对使用MD5并提出其他算法,甚至建议使用不同的技术吗?
使用MD5是否会产生校验和?
SHA256和MD5都是哈希算法。它们接收您的输入数据,即文件,然后输出一个256/128位的数字。这个数字是一个校验和。没有进行加密,因为无限数量的输入可以导致相同的哈希值,尽管在现实中发生碰撞的情况很少。
根据此答案,SHA256需要比MD5更多的时间来计算。
简单地说,我认为MD5可能适合您的需求。
murmur
、XXhash
等)。显然,这些算法并不是为了安全而设计的,因为它们不能满足安全哈希算法的要求(即随机性),但对于大消息具有低碰撞率。这些特性使它们在您不寻求安全性而是寻求速度时非常理想。murmur3
来哈希用户上传的图片,因此即使用户在多个答案中上传相同的图片,我们也只存储一次。对于1): 是的,在大多数CPU上,SHA-256的速度只有MD5的40%左右。
对于2): 我会为此情况提出不同于MD5的算法。我肯定更喜欢一个被认为是安全的算法。然而,这更多是一种感觉。这种情况比较构造,而不是现实的,例如,如果你的备份系统遇到基于MD5的证书攻击案例,你可能会碰到两个在示例中具有不同数据但相同MD5校验和的文件。对于其他情况,这并不重要,因为当被故意挑衅时,MD5校验和在虚拟上只有碰撞(=相同的校验和用于不同的数据)。 我不是关于各种哈希(校验生成)算法的专家,所以我不能建议另一个算法。因此,问题的这部分仍然是开放的。 建议进一步阅读维基百科上的加密哈希函数-文件或数据标识符。在该页面下面还有一个加密哈希算法列表。
对于3): MD5是一种计算校验和的算法。使用该算法计算的校验和称为MD5校验和。
基于 MD5 算法的校验已不再安全可靠。因此,当使用 md5sum 用于识别非安全相关文件中的已知文件时,可以很好地胜任。但是,如果文件可能被故意恶意篡改,则不能依赖其来检查文件完整性。在这种情况下,强烈建议使用新的哈希工具,如 sha256sum。
因此,如果您只是想检查文件损坏或文件差异,并且文件来源可信,则 MD5 应该足够了。 如果您要验证来自不受信任的源或通过未加密连接从可信源获取的文件的完整性,则 MD5 不足以保证其安全性。
还有一位评论者指出 Ubuntu 和其他系统仍在使用 MD5 校验和。Ubuntu 已经转向使用 PGP 和 SHA256 以及 MD5,但更强大的验证策略的文档难以找到。有关详细信息,请参阅 HowToSHA256SUM页面。
总的来说,我认为使用MD5加上文件名是绝对安全的。SHA-256 之所以更慢、更难处理是因为其大小。
你也可以使用比 MD5 不那么安全的算法而不会有任何问题。如果没有人试图攻击你的文件完整性,这也是安全的。
祝愉快哈希!