Message326883
> 100% pure SeaHash does x ^= t at the start first, instead of `t ^ (t << 1)` on the RHS.
Indeed. Some initial testing shows that this kind of "input mangling" (applying such a permutation on the inputs) actually plays a much more important role to avoid collisions than the SeaHash operation x ^= ((x >> 16) >> (x >> 29)).
So my suggestion remains
for y in INPUT:
t = hash(y)
t ^= t * SOME_LARGE_EVEN_NUMBER
h ^= t
h *= MULTIPLIER
Adding in the additional SeaHash operations
x ^= ((x >> 16) >> (x >> 29))
x *= MULTIPLIER
does not increase the probability of the tests passing. |
|
Date |
User |
Action |
Args |
2018-10-02 14:42:41 | jdemeyer | set | recipients:
+ jdemeyer, tim.peters, rhettinger, mark.dickinson, eric.smith, sir-sigurd |
2018-10-02 14:42:41 | jdemeyer | set | messageid: <1538491361.95.0.545547206417.issue34751@psf.upfronthosting.co.za> |
2018-10-02 14:42:41 | jdemeyer | link | issue34751 messages |
2018-10-02 14:42:41 | jdemeyer | create | |
|