Любая криптографическая хеш-функция, даже неработающая, подойдет для обнаружения случайного повреждения. Заданная хеш-функция может быть определена только для входов до некоторого предела, но для всех стандартных хеш-функций этот предел составляет не менее 2 64 битов, то есть около 2 миллионов терабайт. Это довольно большой.
Тип файла не имеет никакого значения. Хэш-функции работают с последовательностями битов (или байтов) независимо от того, что представляют эти биты.
Производительность хеш-функции вряд ли будет проблемой. Даже «медленные» хеш-функции (например, SHA-256) будут работать быстрее на типичном ПК, чем на жестком диске: чтение файла будет узким местом, а не хэшированием (ПК с частотой 2,4 ГГц может хэшировать данные с SHA-512 со скоростью близко к 200 МБ / с, используя одно ядро). Если производительность хэш-функции является проблемой, то либо ваш ЦП очень слабый, либо ваши диски с быстрым SSD (а если у вас 100 ТБ с быстрым SSD, то я немного завидую). В этом случае некоторые хеш-функции работают несколько быстрее, чем другие, MD5 является одной из «быстрых» функций (но MD4 быстрее и достаточно прост, чтобы его код мог быть включен в любое приложение без особых хлопот).
Если злонамеренное вмешательство является проблемой, тогда это становится проблемой безопасности, и это более сложно. Во-первых, вы захотите использовать одну из криптографически неразрушенных хеш-функций, следовательно, SHA-256 или SHA-512, а не MD4, MD5 или SHA-1 (недостатки, обнаруженные в MD4, MD5 и SHA-1, могут не относиться к конкретным ситуация, но это тонкий вопрос, и лучше играть в безопасности). Затем хэширование может быть или не быть достаточным в зависимости от того, имеет ли злоумышленник доступ к результатам хеширования. Возможно, вам может понадобиться использовать MAC , который можно рассматривать как разновидность ключевого хэша. HMAC - это стандартный способ построения MAC из хеш-функции. Существуют другие не основанные на хэше MAC. Более того, MAC использует секретный «симметричный» ключ, который не подходит, если вы хотите, чтобы некоторые люди могли проверять целостность файла, не делая скрытых изменений; в этом случае вам придется прибегнуть к цифровой подписи. Короче говоря, в контексте безопасности вам необходим тщательный анализ безопасности с четко определенной моделью атаки.