是否存在一类哈希算法,无论是理论上的还是实际的,根据下面给出的定义,类中的算法可能被认为是"反身的":
+运算符可以是串联或任何其他指定的操作,以将输出(hash1)组合回输入("输入文本1"),以便算法(algo1)将产生完全相同的结果.即输入和输入+输出上的碰撞.+运算符必须组合两个输入的全部,算法可能不会丢弃部分输入.
该算法必须在输出中产生128位熵.它可能(但不一定)在加密方面难以将输出反转回一个或两个可能的输入.
我不是数学家,但一个好的答案可能包括为什么不能存在这样一类算法的证明.然而,这不是一个抽象的问题.我真的很有兴趣在我的系统中使用这样的算法,如果确实存在的话.
好吧,我可以告诉你,你不会得到不存在的证据。这是一个例子:
运算符+(a,b):计算 a 的 64 位哈希值、b 的 64 位哈希值,并将位串连接起来,返回 128 位哈希值。
algo1:对于某些 128 位值,忽略最后 64 位并计算前 64 位的一些哈希值。
非正式地,任何将第一个运算符生成为 + 作为其第一步的 algo1 都可以。也许课程不像您想要的那么有趣,但它符合要求。这也不是没有现实世界的例子。许多密码哈希算法会截断其输入。