I only bring this up because I think you started out with the same assumption about MD5, ...
That is a very good point.
The distribution of any (perfect(*)) hashing algorithm will only be fully utilised if the inputs can take on all possible values for any given input length.
For example, ASCII or ISO text, certain parts of the input range -- many of the control characters <32; and characters >126 -- will not appear in the inputs, so for any given length, the range of inputs to the hashing algorithm is biased. It stand to reason that the outputs will similarly biased and the full range of the hash values will not be produced.
It is also the case that for any given input language, there are some character combinations that will never appear in normal text -- eg. ZXZXZXZXZXZXZXZXZXZ -- hence the inputs, and thus outputs will be further biased.
For this particular part of the exercise, I'm more concerned with the collision detection mechanism than the vagaries of the hashing.
But thank you for raising the issue. I may well contact you later for the details of your SimCRC64 algorithm.
(*)Note: I am aware that MD5 is probably far from perfect.
|Replies are listed 'Best First'.|
Re^3: [OT] The statistics of hashing.
by flexvault (Monsignor) on Apr 02, 2012 at 08:45 UTC