Я ищу, чтобы создать 32-битный хэш некоторых объектов данных. Поскольку мне не хочется писать собственную хэш-функцию, а md5 доступен, мой текущий подход заключается в использовании первых 32 битов (то есть первых 8 шестнадцатеричных цифр) из хеша md5. Это приемлемо?
Другими словами, первые 32 бита хеша md5 так же "случайны", как и любая другая подстрока? Или есть ли причина, по которой я предпочел бы, скажем, последние 32 бита? или, может быть, XOR'ом четыре 32-битные подстроки вместе?
Некоторые упреждающие пояснения:
- Эти хеши не должны быть криптографически безопасными.
- Меня не беспокоит производительность md5 - она более чем достаточно быстра для моих нужд.
- Эти хэши должны быть достаточно "случайными", чтобы столкновения были редкими.
- В этой системе количество предметов не должно превышать 10 000 (реально, вероятно, оно не будет вдвое меньше). Таким образом, в худшем случае вероятность возникновения каких-либо столкновений должна составлять около 1% (при условии, что найден достаточно «случайный» хеш).