【发布时间】:2013-10-09 06:36:48
【问题描述】:
假设您有两组无序校验和,一组大小为 N,一组大小为 M。根据比较它们的算法,您甚至可能不知道大小,但可以比较 N != M 以快速中止,如果您做。
用于校验和的散列函数有一定的冲突机会,作为外行我愚蠢地称之为“强度”。有没有办法获取两组校验和,全部由相同的哈希函数制成,并快速比较它们(因此比较元素与元素是正确的)两组之间发生冲突的基本机会与两个单独的校验和之间存在相同的基本机会?
例如,一种方法是通过对集合中的所有校验和进行异或运算来计算“集合校验和”。这个新的单个散列用于与其他集合的散列进行比较,这意味着不再需要存储大小。特别是因为可以通过与集合的校验和进行异或来修改它以添加/删除元素校验和,而无需重新计算整个事物。但是,与所有原始校验和的蛮力比较相比,这会降低集合校验和的“强度”吗?有没有一种方法可以合并集合的校验和,不会降低“强度”(尽可能多?),但仍然没有直接比较集合元素的校验和那么复杂?
【问题讨论】:
-
这里的强度有多重要?发生碰撞的几率仍然很低。如果您使用的是大小合适的校验和,我不会太担心。
-
@Geobits 这不是真的,我觉得很安全。我只是好奇是否有一些我没有注意到的聪明东西。
标签: algorithm hash language-agnostic checksum