Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Если мне говорят, про возможность возникновения коллизий, я прошу человека привести пример двух строк или двух файлов, md5 хеш, которых одинаков… пока еще мне не было приведено такой пары так, что возможность является чисто теоретической.
В 2005 году Ван Сяоюнь и Юй Хунбо из университета Шаньдун в Китае опубликовали алгоритм, который может найти две различные последовательности в 128 байт, которые дают одинаковый MD5-хеш. Одна из таких пар (отличающиеся разряды выделены):
d131dd02c5e6eec4693d9a0698aff95c
2fcab58712467eab4004583eb8fb7f89
55ad340609f4b30283e488832571415a
085125e8f7cdc99fd91dbdf280373c5b
d8823e3156348f5bae6dacd436c919c6
dd53e2b487da03fd02396306d248cda0
e99f33420f577ee8ce54b67080a80d1e
c69821bcb6a8839396f9652b6ff72a70
и
d131dd02c5e6eec4693d9a0698aff95c
2fcab5O712467eab4004583eb8fb7f89
55ad340609f4b30283e4888325f1415a
085125e8f7cdc99fd91dbd7280373c5b
d8823e3156348f5bae6dacd436c919c6
dd53e23487da03fd02396306d248cda0
e99f33420f577ee8ce54b67080280d1e
c69821bcb6a8839396f965ab6ff72a70
Каждый из этих блоков даёт MD5-хеш, равный 79054025255fb1a26e4bc422aef54eb4.
Да, кстати, самое интересное… хотя для хранения файлов и используют файловую систему XFS, но тем не менее все данные хранятся в одном большом файле, открытом на чтение, и каждый новый загружаемый контент дописывается в конец этого большого файла. Индекс, по которому искать контент, хранится в оперативке, и ведется некий бинарный лог для восстановления индекса, в случае непредвиденной перезагрузки сервера. Как говорят разработчики Вконтакте, при обычном (стандартном хранении данных, как мы привыкли — по папкам и подпапкам) FS при прямом доступе к файлам делает кучу ненужных операций, что может оказаться весьма нежелательным и плохо сказаться не производительности. Так же проскользнула интересная мысль — для обработки документов использовать черный список (запрещенных типов), вместо белого (разрешенных).
Хранение файлов