Math 没有顺序依赖关系的数学运算(或哈希函数)

Math 没有顺序依赖关系的数学运算(或哈希函数),math,hash,cryptography,Math,Hash,Cryptography,我考虑的问题是散列函数,尽管我主要感兴趣的是描述我请求的属性的数学术语/背景 考虑这样一种情况,其中一个哈希函数接受一个秘密(S)和一个创建另一个数字(Y)的数字(X): 然后我定义了两个不同的散列函数,它们有自己的秘密(a和b): 我想要的财产是: H1(H2(x)) = H2(H1(X)) (我想这就是所谓的功能通勤?) 从编程和数学思考中退一步,我们可以看到不同的操作。如果函数只包含一个操作,那么我很确定,如果操作同时具有关联和交换属性,那么这个属性将始终得到满足。然而,有些操作是顺序不

我考虑的问题是散列函数,尽管我主要感兴趣的是描述我请求的属性的数学术语/背景

考虑这样一种情况,其中一个哈希函数接受一个秘密(S)和一个创建另一个数字(Y)的数字(X):

然后我定义了两个不同的散列函数,它们有自己的秘密(ab):

我想要的财产是:

H1(H2(x)) = H2(H1(X))
(我想这就是所谓的功能通勤?)

从编程和数学思考中退一步,我们可以看到不同的操作。如果函数只包含一个操作,那么我很确定,如果操作同时具有关联和交换属性,那么这个属性将始终得到满足。然而,有些操作是顺序不敏感但非交换的,例如除法。我如何知道我选择的哈希函数是否会使它通勤

一些似乎有效的例子:

简单添加:

Hash(S, X) := S + X
按位异或:

Hash(S, X) := S xor X
模幂运算:

Hash(S, X) := X^S mod p
if S ∈ N and X ∈ Z
我如何知道我选择的哈希函数是否会使它通勤

合成条件下的交换性是一个不寻常的性质。除非函数使用一些底层代数结构的交换运算,例如“乘
x
”,否则它不是典型的。这是你的三个例子的形式

实际的答案是“如果你没有证据证明它是可交换的,假设它不是可交换的”。没有通用算法可以为您提供这种证明。

表明“可交换性”很好……但应该清楚地理解为“哈希函数(及其嵌入的秘密)相对于复合运算符的可交换性”。
Hash(S, X) := S xor X
Hash(S, X) := X^S mod p
if S ∈ N and X ∈ Z