Хэши не гарантированно , чтобы быть уникальными, но вероятность коллизии исчезающе мала.
Если ваш хеш, скажем, 128 битов, то вероятность коллизии для любогопара записей 1 в 2 ^ 128.Согласно парадоксу дня рождения, если в вашей таблице было 10 ^ 18 записей, то вероятность столкновения составляет всего 1%, поэтому вам не нужно об этом беспокоиться.Если вы чрезмерно параноидальны, увеличьте размер хеша с помощью SHA256 или SHA512.
Очевидно, вам необходимо убедиться, что хешированное представление на самом деле занимает меньше места, чем исходное имя файла.Строки в кодировке Base-64 представляют 6 битов на символ, так что вы можете выполнить математические расчеты, чтобы выяснить, стоит ли вообще делать хеш в первую очередь.
Если ваша файловая система barfs из-за слишком длинных имен, тогда выможет создавать префиксные подкаталоги для реального хранилища.Например, если файл отображает хеш-код ABCDE, вы можете сохранить его как /path/to/A/B/CDE
или, возможно, /path/to/ABC/DE
в зависимости от того, что лучше всего подходит для вашей файловой системы.
Git является хорошим примером этого методана практике.