LINUX.ORG.RU

История изменений

Исправление Suntechnic, (текущая версия) :

На самом деле - нет. Дело в том, что данная функция обладает отвратительным распространением (лавинным эффектом) и смена даже одного бита (или символа) в файле, которая важна для тебя, с очень малой вероятностью затронет такой хэш.

Для тебя есть два пути - если у тебя быстрый язык, то «придумай» хэш функцию сам - плясать можно от таких вариантов:
Тупо сумма всех байт
Сумма по модулю, если важен размер хэша, к тому же иногда ее быстрее считать
XOR всех байтов - с большой вероятностью может быть быстрее суммы
Любой из предыдущих вариантов, но четные и нечетные байты отдельно - снижаем количество коллизий

Но все это может оказать медленным очень если у тебя какой-нибудь PHP и будет работать в разы дольше md5. В это случае не будет ничего лучше чем тупо протестировать все функции хэша встроенный в язык и выбрать самые быстрые. Никто тебе не даст ответа что это будет на твоих файлах. Так как вычисление одной функции на 1Гб это одно, а вычисление 1024 функций на 1024 файлах по 1Мб - это другое. Отношения размера файлов к их количеству важны.

Исходная версия Suntechnic, :

На самом деле - нет. Дело в том, что данная функция обладает отвратительным распространением (лавинным эффектом) и смена даже одного бита (или символа) в файле, которая важна для тебя, с очень малой вероятностью затронет такой хэш.

Для тебя есть два пути - если у тебя быстрый язык, то «придумай» хэш функцию сам - плясать можно от таких вариантов: Тупо сумма всех байт
Сумма по модулю, если важен размер хэша, к тому же иногда ее быстрее считать
XOR всех байтов - с большой вероятностью может быть быстрее суммы
Любой из предыдущих вариантов, но четные и нечетные байты отдельно - снижаем количество коллизий

Но все это может оказать медленным очень если у тебя какой-нибудь PHP и будет работать в разы дольше md5. В это случае не будет ничего лучше чем тупо протестировать все функции хэша встроенный в язык и выбрать самые быстрые. Никто тебе не даст ответа что это будет на твоих файлах. Так как вычисление одной функции на 1Гб это одно, а вычисление 1024 функций на 1024 файлах по 1Мб - это другое. Отношения размера файлов к их количеству важны.