Действительно, в общем случае коллизий не избежать. Однако, на практике вполне достаточно того что коллизии маловероятны.
Можно посмотреть на примеры использования хешей:
* контрольная сумма — проверка того что большой файл не испорчен или не изменен. Вероятность коллизии ~= 1/2^HASH_LENGTH при случайных изменениях. Хорошие криптографические хеш функции предполагают, что подобрать данные с заданым хешом очень сложно.
*
hash map. Коллизия в этой структуре данных это нормальная ситуация. Коллизии отслеживаются и обрабатываются различными
способами, и если их становится слишком много пространство хешей расширяют.