Соление обычно используется в хешах паролей, чтобы избежать атак по словарю. Существует множество веб-словарей обратного хеширования, в которых вы вводите хеш (например, 1a79a4d60de6718e8e5b326e338ae533) и возвращаете текст: «пример». С солью это становится почти невозможным. Если вы добавите пароль со случайной солью, атака по словарю станет более сложной.
Что касается коллизий, я не думаю, что вам нужно беспокоиться о целых файлах, имеющих одинаковый хэш md5 или sha1. это не важно. Важное использование хэша состоит в том, чтобы доказать, что файл, который вы получаете, совпадает с файлом, который был утвержден кем-то, кто является авторитетом в этом файле. Если вы добавите соль в файл, вам нужно отправить соль, чтобы пользователь мог проверить хеш.
На самом деле проще для злоумышленника подделать ваш файл, поскольку он может предоставить ложную соль вместе с ложным файлом. Пользователь обычно может сказать, является ли файл поддельным, потому что он больше не служит цели, для которой он предназначен. Но как пользователь должен знать разницу между правильной солью и солью атакующего?