Как возможно захешировать любой файл, если количество комбинаций самой хеш-суммы ограничено?
количество комбинаций хеш-суммы для каждого алгоритма огромное, но ведь файлов (или даже простых строк) еще большеВозможных файлов больше. Реально использованных -- гораздо меньше. Т.е. если мы возьмём 109 компьютеров перебирающих 109 файлов в секунду, то чтобы перебрать все возможные значения sha1 потребуется 2160/1018 = 1030 секунд, т.е. 4 * 1022 лет, что существенно больше возраста Вселенной.
Действительно, в общем случае коллизий не избежать. Однако, на практике вполне достаточно того что коллизии маловероятны.
Можно посмотреть на примеры использования хешей:
* контрольная сумма — проверка того что большой файл не испорчен или не изменен. Вероятность коллизии ~= 1/2^HASH_LENGTH при случайных изменениях. Хорошие криптографические хеш функции предполагают, что подобрать данные с заданым хешом очень сложно. 
* hash map.  Коллизия в этой структуре данных это нормальная ситуация. Коллизии отслеживаются и обрабатываются различными способами, и если их становится слишком много пространство хешей расширяют.