理论哈希冲突与随机数冲突

问题描述 投票:0回答:0

我有一个关于哈希与随机数冲突概率的理论问题。我对确切的概率不感兴趣。确切的散列函数是不相关的(我们可以假设它是完全统一的、加密强度高等)。随机数生成器的实现也不相关(我们可以假设它是一个完美的随机生成器)。

  1. 如果我有一些已知唯一的inputM值池

    M
    位(其中
    M
    N
    的一半),做一个散列inputM
    hashN(inputM)
    产生一个N -位散列的碰撞概率低于生成随机数的 N 位
    randN()
    ?直觉上,虽然哈希函数不能保证唯一性,但它的一致性不是降低碰撞的机会吗?因为它是在唯一的输入值上执行的?

  2. 假设#1 为真,

    hashN(inputM, randM())
    的碰撞概率是否低于
    randN()
    的碰撞概率?换句话说,在哈希输入中添加一个随机分量是否会使输出完全随机,我还不如刚刚产生了一个 N 位随机数?或者仍然会比简单的 N 位随机数发生冲突的可能性更低,因为哈希函数的一半输入来自已知没有冲突的输入值池?

虽然这个问题涉及数学理论,但它直接影响我需要做出的编程决策:如果我有一个文件名并且我想唯一地标识该文件名,但使用不透明的标识符,我可以对文件名进行哈希处理(SHA-256 或其他任何) 或者我可以生成一个随机数。散列文件名会降低冲突的可能性吗?

这不是关于散列概率是否会在现实生活中实际产生碰撞,或者 SHA-256 是否是一个好的散列算法,或者使用哪个随机数生成器等的问题。这只是比较之间的碰撞概率散列和随机数一般。

random hash hash-collision
© www.soinside.com 2019 - 2024. All rights reserved.