Действительно ли SHA достаточен для проверки дублирования файла? (sha1_file в PHP)

Предположим, что Вы хотели сделать сайт хостинга файлов для людей, чтобы загрузить их файлы и отправить ссылку их друзьям для получения его позже, и Вы хотите обеспечить, чтобы файлы были дублированы, где мы храним их, действительно ли sha1_file PHP достаточно хорош для задачи? Там какая-либо причина не состоит в том, чтобы использовать md5_file вместо этого?

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

Кроме того, действительно ли использование является солью, несерьезной, так как безопасность в отношениях нападения таблицы радуги ничего не значит для этого, и хеш мог позже использоваться в качестве контрольной суммы?

Одна последняя вещь, масштабируемость? первоначально, это только будет используемым для маленьких файлов несколько megs большой, но в конечном счете...

Редактирование 1: точка хеша должна, прежде всего, избежать дублирования файла, для не создания мрака.

6
задан 4 revs, 3 users 100% 25 April 2012 в 06:27
поделиться

3 ответа

Согласно моему комментарию к ответу @ykaganovich, SHA1 (что удивительно) немного быстрее, чем MD5.

Судя по вашему описанию проблемы, вы не пытаетесь создать безопасный хэш - просто скрываете файл в большом пространстве имен - в этом случае использование таблиц соли / радуги не имеет значения - единственное соображение - вероятность ложное столкновение (где два разных файла дают один и тот же хеш). Вероятность того, что это произойдет с md5, очень и очень мала. Еще более удаленно с sha1. Однако вам нужно подумать о том, что происходит, когда 2 независимых пользователя загружают один и тот же варез на ваш сайт. Кому принадлежит файл?

На самом деле, похоже, нет никакой причины использовать хеш - просто сгенерируйте достаточно длинное случайное значение.

3
ответ дан 10 December 2019 в 02:46
поделиться

SHA отлично работает в любой «нормальной» среде. Хотя Бен Линн - автор «Git Magic» говорит:

A.1. Слабые стороны SHA1 С течением времени криптографы обнаруживают все больше и больше слабых мест SHA1 . Уже сейчас обнаружение хеш-коллизий возможно для хорошо финансируемых организаций. В течение лет, возможно, даже на обычном ПК будет достаточно вычислительной мощности, чтобы незаметно повредить репозиторий Git. Надеюсь, что раньше Git перейдет на улучшенную хэш-функцию. дальнейшее исследование уничтожает SHA1.

Вы всегда можете проверить SHA256 или другие, которые еще длиннее. Обнаружить коллизию MD5 проще, чем с SHA1.

2
ответ дан 10 December 2019 в 02:46
поделиться

Оба варианта должны быть в порядке. sha1 является более безопасной хэш-функцией, чем md5, что также означает, что она медленнее, что, вероятно, означает, что вы должны использовать md5 :). Вы все еще хотите использовать соль для предотвращения атак типа "открытый текст/радуга" в случае очень маленьких файлов (не делайте предположений о том, что люди решат загрузить на ваш сайт). Разница в производительности будет незначительной. Вы все еще можете использовать его в качестве контрольной суммы, если вы знаете соль.

Что касается масштабируемости, я бы предположил, что вы, скорее всего, будете привязаны к IO, а не к CPU, поэтому я не думаю, что вычисление контрольной суммы даст вам большие накладные расходы, особенно если вы будете делать это в потоке по мере загрузки.

0
ответ дан 10 December 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: