Насколько безопасно полагаться на хэши для идентификации файлов?

Я разрабатываю облачное программное обеспечение хранения поверх стека LAMP.

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

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

Клиенты могут хранить файлы под любой строкой (обычно это какой-то путь и имя файла).

Эта строка гарантированно уникальна, потому что на первом уровне это что-то вроде "buckets" «пользователи должны пройти регистрацию, как в хранилище Amazon S3 и Google.

Мой план состоит в том, чтобы хранить файлы в виде хэша пути, определенного на стороне клиента.

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

Но я боюсь коллизий. В настоящее время я подумываю об использовании хэшей SHA1.

Я слышал, что GIT использует хеши также и идентификаторы ревизий.

Я знаю, что вероятность коллизий действительно очень мала, но возможна.

Я просто не могу судить об этом. Вы бы использовали хэш для этой цели или нет?

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

6
задан Prof. Falken supports Monica 2 September 2012 в 20:40
поделиться