On Sun, 1 Jan 2012 21:55:52 -0800 Paul McMillan firstname.lastname@example.org wrote:
This is similar to the change proposed by Christian Heimes.
Most importantly, I moved the xor with r[x % len_r] down a line. Before, it wasn't being applied to the last character.
Shouldn't it be r[i % len(r)] instead? (refer to yesterday's #python-dev discussion)
I think Ruby uses FNV-1 with a salt, making it less vulnerable to this. FNV is otherwise similar to our existing hash function.
Again, we could re-use FNV-1's primes, since they claim they have better dispersion properties than the average prime.