![]() |
1
8
好吧,这将取决于哈希算法——但是我会惊讶地看到有任何东西明确地阻止了这一点。毕竟,这真的不重要。 我怀疑这是不太可能发生的,当然(对于加密散列)但即使这样,也不会造成问题。
对于非加密散列(用于散列表等),在某些情况下返回源值是完全合理的。例如,在Java中,
|
![]() |
2
4
当然,整数的python散列算法返回整数的值。所以hash(1)==1。 |
![]() |
3
4
给出了一个好的哈希算法,它返回一个看似随机的输出,我相信平均应该有一个输入作为输出。假设散列可以给出n个可能的输出。这意味着有n个可能的输入是可能的。对于其中的每一个,与输入匹配的输出的概率是1/n,因此,固定点的预期数量是n*1/n,或1。 |
![]() |
4
2
散列函数 可以 定义为避免哈希(x)==x的定点,但您的哈希奎因有点不同,因为您采用的是哈希十六进制的字符串表示,而不是原始二进制。我认为,设计一个可能会阻碍这一点的散列是不可行的,而且从数学上来说,它就不那么有趣了,因为它依赖于0-F到ASCII字符代码的任意映射。 见 Is there an MD5 Fixed Point where md5(x) == x? 讨论MD5中的固定点。对于十六进制哈希奎因和任何其他输出为128位的哈希函数,概率计算同样正确。 |