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