在阅读了有关单向哈希函数为何是单向的原因后,我想知道如何设计哈希函数。是的,我知道不使用经过验证和测试的哈希函数是个糟糕的想法,但我仍然想知道设计中要考虑哪些因素以及设计过程是怎样的。
我熟悉 Feistel 网络密码算法,但这些算法必须是可逆的,这对于密码哈希来说非常糟糕。在密码哈希中是否有一种被广泛采用的结构?一些能够使其成为单向函数的特点吗?
在阅读了有关单向哈希函数为何是单向的原因后,我想知道如何设计哈希函数。是的,我知道不使用经过验证和测试的哈希函数是个糟糕的想法,但我仍然想知道设计中要考虑哪些因素以及设计过程是怎样的。
我熟悉 Feistel 网络密码算法,但这些算法必须是可逆的,这对于密码哈希来说非常糟糕。在密码哈希中是否有一种被广泛采用的结构?一些能够使其成为单向函数的特点吗?
目前正在进行NIST哈希函数竞赛,其目标是找到替代旧的SHA-1和SHA-2函数的方法。
您可以获取参与该竞赛的所有算法的白皮书(请参见此处以获取第二轮提交)。其中描述了许多不同的哈希函数,以及它们的优点和问题。
哈希函数和其他加密函数是使用非常强大的数学概念创建的。它们中的大多数都是这样构建的,因此不一定无法反转/解密它们,但取决于当前计算机的性能,这是不可行的。这就是为什么以前认证的DES和MD5算法现在已经过时的原因。话虽如此,我建议您首先了解与加密哈希函数相关的数学概念。哪一个?我会把这个问题留给比我更有知识的人 :)
反向计算单向哈希需要解决离散对数问题。对于较大的位数,这确实是一个困难的问题,但不幸的是我相信有一些方法可以用n=128来解决它。我怀疑使用比2更大的进制,并使用其他基本操作而不是异或,可能会提高方法的强度,但我不知道如何分析这些微调以确保函数是双射的。