【发布时间】:2015-08-12 00:38:59
【问题描述】:
我一直认为这是一个思想实验,试图理解一些散列概念。考虑一个说 128 位散列函数的要求(即,它的输出长度正好是 128 位)。
A.您可能会查看类似 MD5 的内容。因此,您输入要散列的数据,然后弹出一个 128 位数字。
B.或者,您会发现一个神奇的伪随机数生成器 (PRNG)。某种科学怪人版本的 Twister。它从您要散列的所有输入数据中播种,并具有内部状态大小 >> 128 位。然后生成 128 个伪随机位作为输出。
在我看来,A 和 B 都有效地产生了仅由输入数据决定的输出。因此,这两种方法是否等效?
补充:
一些反馈表明,我的方案可能存在安全性不等价。如果伪随机数生成器类似于 Java 的 SecureRandom(使用 SHA-1),从输入数据中播种,那么 A B?
【问题讨论】:
-
equivalent在serving as a kind of hash function的意义上。 md5 也保证integrity,这可能是您自制的散列无法提供的。 -
@HuStmpHrrr,抱歉,在这种情况下完整性是什么意思?
-
和你的问题无关,只是md5有一个属性,随机hash函数可能不满足。