![]() |
1
2
任何缺少逐字节比较的完整性检查都不可避免地像散列一样。也就是说,在像MD5这样的加密散列被普遍使用之前,使用了一般称为“校验和”的简单算法。有些是标准化的(试着查找,例如,CRC32)到了某种程度。
不过,要小心使用什么以及用于什么目的——MD5和SHA-1不再被认为是安全的,可以抵御恶意攻击(不过,如果只是将它们用作“更好的校验和”,它们就没问题)。 |
![]() |
2
0
通常就这些。但是这并不能检查文件来自谁。后者是通过更复杂的数字签名来实现的。 还有MD5( as well as SHA-1 )已经 broken |
![]() |
3
0
哈希函数在许多领域(如网络)中用于完整性原因。另一方面,对正直的观念很弱,所以大多数时候都是避免的。它们接受任意长度的输入,并生成(通常是压缩数据)固定长度的数据。如何检查哈希函数?就像您所说的,接收方生成消息的散列函数,然后检查这两个值。 此外,这个函数不验证消息的发送者,这就是为什么存在“数字签名”。当有人在消息上签名时,不能否认他执行了特定的操作,因此签名也提供了“不可抵赖性”。 因此你必须小心你将要使用的功能。与SHA-1、SHA-2相比,MD5较弱。你也可以试试mcrypt和scrypt,它们是最强的。 |