Hash 哪些散列函数彼此正交?

Hash 哪些散列函数彼此正交?,hash,hash-collision,error-correction,hash-code-uniqueness,reed-solomon,Hash,Hash Collision,Error Correction,Hash Code Uniqueness,Reed Solomon,我对多级数据完整性检查和更正感兴趣。在使用多个纠错码的情况下(它们可以是2个相同类型的码)。我的印象是,如果使用的两个哈希码彼此正交,那么使用两个代码的系统将获得最大的效率 有哪些代码与什么正交的列表吗?或者您是否需要使用相同的哈希函数,但参数或用法不同 我希望第一级ecc将是一个reed-solomon代码,尽管我实际上没有对第一个函数的控制权,因此我不能使用一个具有改进功能的代码 请注意,我不关心加密安全性 编辑:这不是的副本 因为它本质上是问正交散列函数的定义是什么。我想举例说明哪些散列

我对多级数据完整性检查和更正感兴趣。在使用多个纠错码的情况下(它们可以是2个相同类型的码)。我的印象是,如果使用的两个哈希码彼此正交,那么使用两个代码的系统将获得最大的效率

有哪些代码与什么正交的列表吗?或者您是否需要使用相同的哈希函数,但参数或用法不同

我希望第一级ecc将是一个reed-solomon代码,尽管我实际上没有对第一个函数的控制权,因此我不能使用一个具有改进功能的代码

请注意,我不关心加密安全性

编辑:这不是的副本

  • 因为它本质上是问正交散列函数的定义是什么。我想举例说明哪些散列函数是正交的

    • 我甚至不确定是否可以枚举所有正交哈希函数。但是,您只要求提供一些示例,因此我将努力提供一些以及一些直觉,以了解哪些属性似乎会导致正交哈希函数

      从中,这两个函数相互正交:

      Domain: Reals --> Codomain: Reals
      f(x) = x + 1
      g(x) = x + 2
      
      这是一个非常明显的例子。如果散列函数(两者)都是这样的完美散列函数,则更容易确定正交性。请注意,术语“完美”是指数学意义上的,而不是指这些函数应永远用作哈希函数

      对于完美哈希函数来说,满足正交性要求或多或少是一个简单的例子。无论何时,函数都是完美的散列函数,因此是正交的。类似的例子:

      Domain: Integers --> Codomain: Integers
      f(x) = 2x
      g(x) = 3x
      
      在前面的例子中,这是一个内射函数,但不是因为域中的每个元素都映射到密码域中的一个元素,而是密码域中有许多元素根本没有映射到。对于完美散列和正交,这些仍然足够。(请注意,如果域/辅域是Reals,则这将是一个双射。)

      非内射函数更难分析。但是,如果一个函数是内射的,而另一个不是内射的,则它们是正交的:

      Domain: Reals --> Codomain: Reals
      f(x) = e^x // Injective -- every x produces a unique value
      g(x) = x^2 // Not injective -- every number other than 0 can be produced by two different x's
      
      所以一个技巧就是知道一个函数是内射的,另一个不是。但如果两者都不是内射的呢?我目前还不知道有哪种算法适用于一般情况,而不是暴力

      Domain: Naturals --> Codomain: Naturals
      j(x) = ceil(sqrt(x))
      k(x) = ceil(x / 2)
      
      这两个函数都不是内射函数,在这种情况下是因为存在两个明显的非内射函数:
      ceil
      abs
      与受限域相结合。(实际上,大多数散列函数的域权限不会大于整数。)测试值将显示
      j
      将具有非唯一性结果,而
      k
      不会,反之亦然:

      j(1) = ceil(sqrt(1)) = ceil(1) = 1
      j(2) = ceil(sqrt(2)) = ceil(~1.41) = 2
      k(1) = ceil(x / 2) = ceil(0.5) = 1
      k(2) = ceil(x / 2) = ceil(1) = 1
      
      但是这些功能呢

      Domain: Integers --> Codomain: Reals
      m(x) = cos(x^3) % 117
      n(x) = ceil(e^x)
      
      在这些情况下,两个函数都不是内射的(由于模和ceil),但它们什么时候发生碰撞?更重要的是,对于x的哪些值元组,它们都有冲突?这些问题很难回答。我怀疑它们不是正交的,但如果没有一个具体的反例,我不确定我能证明这一点


      当然,这些不是您可能遇到的唯一散列函数。所以决定正交性的诀窍是首先看它们是否都是内射的。如果是这样,它们是正交的。第二,看看是否有一个是内射的。如果是这样,它们就不是正交的。第三,看看你是否能看到导致它们不是内射的函数片段,看看你是否能确定它的周期或特殊情况(比如x=0),并尝试提出反例。第四,访问并希望有人能告诉你他们在哪里打破正交性,或者证明他们没有。不,这是一个不同的问题,本质上是问正交散列函数的定义是什么。我想举例说明哪些散列函数是orthogonal@BlackVegetable如果你要删除你对……的评论,你能同时删除问题上的重复标记吗?我不知道怎么做。我会查看meta,看看是否可行。很抱歉,无法撤消标志。给您带来不便,我深表歉意。作为回报,我会尽力回答你的问题!(见:)我在askubuntu SE网站上问了一个问题,不知何故删除了重复标记。。。也许是被其他人否决了。。。