我知道哈希函数进行计算,最终结果是具有固定长度的字符串。它们用于验证文件是否相同 - 例如,下载的文件。文件的所有者提供了哈希,因此在这种情况下的完整性检查是2个哈希的比较。
这是唯一的文件完整性检查还是还有其他事情?
答案 0 :(得分:2)
除了逐字节比较之外的任何完整性检查都不可避免地像哈希一样。也就是说,在像MD5这样的密码哈希变得普遍使用之前,使用了通常称为“校验和”的简单算法。有些是标准化的(尝试查找,例如,CRC32)到某种程度。
这些方法的质量差异很大。 CRC32校验和很容易错过任何实际大小的文件中的损坏或修改,例如,任何常见的加密函数(例如MD5或SHA *)都是非常好的完整性指标。
小心你使用的是什么以及用于什么目的 - MD5和SHA-1不再被认为可以抵御恶意攻击(如果你只是将它们用作“更好的校验和”,它们就没问题了,虽然)。
答案 1 :(得分:0)
通常就是这样。但是,这不会检查文件的来源。后者是通过更复杂的数字签名实现的。
此外,MD5(as well as SHA-1)已broken,因此不应在可能发生故意文件修改的情况下使用。应该使用更强的哈希函数。
答案 2 :(得分:0)
哈希函数出于完整性原因用于许多领域,例如网络。另一方面,完整性概念很弱,所以大部分时间都是可以避免的。它们采用任意长度的输入,并产生(通常压缩数据)固定长度。如何检查哈希函数?就像你说的那样,接收器产生消息的哈希函数,然后检查这两个值。 此外,此功能不会验证消息的发件人,这就是“数字签名”存在的原因。当有人签署消息时不能否认他执行了具体行动,因此签名也提供了“不可否认性”。 你必须小心,因此你将使用什么功能。与SHA-1,SHA-2相比,MD5较弱。您也可以尝试最强大的mcrypt和scrypt。