Ric*_*mes 5 hash cryptography hash-collision
有趣的是,我没有找到关于任何测试或实验的单个512位哈希碰撞机会的充分信息,如漩涡与4个128位哈希的连接,如md5,sha1等.
当执行散列的数据仅在平均100个字符上相当小时,4个128位散列看起来相同的可能性似乎比单个512位散列更不可能.
但它只是一个明显的猜测没有基础,因为我没有进行任何测试.你怎么想的?
编辑它像512bit哈希和128位哈希.128位哈希.128位哈希.128位散列(4个128位散列连接)
Edit2 我想在url或哈希上使用哈希来考虑RAM 和目的是最小化冲突的可能性,因为我想将哈希列设置为唯一而不是url列.
编辑3 请注意,这个问题的目的是找到最小化碰撞可能性的方法.话虽如此,为什么我需要更多地关注最小化碰撞的可能性?这是我的Edit2描述,它导致找到使用更少RAM的解决方案.因此,兴趣在于最小化冲突并降低RAM使用率.但这个问题的主要焦点是降低碰撞的可能性.
听起来你想要比较碰撞行为:
hash512(x)
Run Code Online (Sandbox Code Playgroud)
与碰撞行为:
hash128_a(x) . hash128_b(x) . hash128_c(x) . hash128_d(x)
Run Code Online (Sandbox Code Playgroud)
其中" ."表示串联,并且hash128_a,hash128_b等四种不同的128位散列算法.
答案是:它完全取决于所涉及的各个哈希的属性.
例如,考虑128位散列函数可以实现为:
uint128_t hash128_a(T x) { return hash512(x)[ 0:127]; }
uint128_t hash128_b(T x) { return hash512(x)[128:255]; }
uint128_t hash128_c(T x) { return hash512(x)[256:383]; }
uint128_t hash128_d(T x) { return hash512(x)[384:511]; }
Run Code Online (Sandbox Code Playgroud)
在这种情况下,性能将是相同的.
512位就是512位。唯一的区别在于哈希值的缺陷不同。最好的整体哈希值是使用可用的最佳算法的 512。
编辑以添加说明,因为评论太长:
理想的哈希将内容统一映射到 x 位。如果您有 4 个(完全独立的)x 位哈希值,则将文件统一映射到 4x 位;4x 位散列仍然将同一文件统一映射到 4x 位。4x 位就是 4x 位;只要它是完全一致的,无论它是来自 1 (4x) 个哈希函数还是 4 (x) 个哈希函数,都没有关系。然而,没有哈希可以是完全理想的,因此您需要最均匀的可获得分布,并且如果您使用 4 个不同的函数,则只有 1 个可以最接近最优,因此您有 x 个最优位和 3x 个次优位,而单个算法可以覆盖整个4x空间的最优分布。
我认为足够大的算法可能具有比单个 512 分布更均匀的位子集,并且可以组合起来以获得更大的均匀性,但这似乎需要大量的额外研究和实现,但潜力不大益处。