文件完整性校验 散列算法 概念 散列算法可以把【任意尺寸】的数据(原始数据)转变为一个【固定尺寸】的“小”数据(叫“散列值”或“摘要”)。 摘要长度 对于某个具体的散列算法,得到的散列值长度总是固定的。散列值的长度又称“摘要长度”。 特色 不可逆性:不同于压缩算法和加密算法,散列算法不可逆 确定性:通过某种散列算法,分别对两个原始数据计算散列值。如果算出来的散列值不同,那么可以 100% 肯定这两段数据是不同的——这就是“确定性”。 但反过来,如果这两段数据的散列值相同,则只能说,这两段数据【非常可能】相同。所谓的“非常可能”,就是说,还达不到百分百。 散列碰撞 概念 存在非常小的可能性,导致两段不同的原始数据,计算出相同的散列值 类型 随机碰撞 (小概率) 人为碰撞:故意制造散列碰撞,以骗过“基于散列值的完整性校验” 如何避免碰撞 对于人为碰撞: