Как известно, наверное, многим, md5 представляет из себя «слепок», или, если угодно, «след» строки. на выходе это 16 байтная строка, в идеале уникальная, с одной стороны, для любых 16 байтных строк, а с другой — обеспечивающая существенный разброс значений при малейшем изменении строки-источника.
К сожалению, алгоритм md5 взломан (автор называет этот метод не иначе, как туннелирование). но ещё остался sha1, который считается взломанным только теоретически (существует доказанный механизм коллизий), но не практически — на их нахождение требуется миллиарды лет.
Но разговор не об этом. в php5 для функции md5 добавлена ещё одна булева переменная. в зависимости от этой переменной, функция возвращает либо 32 байтную строку (символы 0-9a-f), либо 16 байтную. отличие в том, что 32 байтную строку можно свободно применять где и как уходно (хотя бы для создания файлов, например, при организации кеширования sql-запросов ). конечно, чем меньше имя файла, тем удобнее (допустим, чтобы уменьшить вероятность коллизии и, как следствие, перезаписывание или считывание не того файла, его имя можно генерировать как сумму md5+длина_строки = 32 + 2–4 байта).
Теперь вспомним про base64. данный алгоритм создавался для разносторонних возможностей передачи данных по сети. после обработки произвольной строки её размер увеличивается на треть. результирующая строка включает следующие символы: a-zA-Z0-9+/, в качестве дополнителя используется символ = (длина строки должна быть кратна 4 байтам, т. к. из каждых 4 байт при обратном преобразовании получается 3).
Если получить от функции md5 «сырец», прогнать его через base64_encode, то в результате получим 24 символа, а не 32. уже лучше. однако есть одно но: в base64 один из заменяемых символов может быть слешем, что совершенно недопустимо. поэтому нужно просто заменить этот символ любым, допустимым в имени файла (но не входящим в преобразованную строку!). в общем, получится что-то вроде:
$hash = strtr(base64_encode(md5($str, true)), '/', '-');
Теперь эту строку можно оформить в виде функции и использовать в своих проектах.
PS: Всё, что сказанно для md5, актуально и для sha1, с той разницей, что сырец sha1 занимает 20 байтов, а при преобразовании в base64 «вырастает» до 28 (что всё-равно меньше, чем «md5 по умолчанию»).
днём интернета
шоколадкой для работы мозга
коробочкой ароматного чая для бодрости
продлением хостинга на +1 месяц
Помогите разломать яндексовский реферер с поиска. Там че то типа того, о чем вы написали.
Насколько знаю, этого ещё никому не удалось. Реферер содержит сигнатуру, но скорее всего, есть дополнительные параметры, известные только ПС. Не зная их, данную задачу сможет решить если только консилиум математиков
>> сможет решить если только консилиум математиков
Вот и пацаны недоумевают созывать или нет?
Да ладно. Не главное в жизни.
Так и Яндексу ничего не помешает добавить ещё один параметр (например, ver=2) и изменить алгоритм шифрования.
Как говорится, пользуйте метрику, уважаемые товарищи босяки
Ну .. Че это они там вообще раскреативились! УРЛы им покудрявее да калитки такие чтобы кланялись чаще ))))
Гугл вообще «прикрыл лавочку», даже аналитикой нельзя узнать, по каким фразам люди переходят. Не удивлюсь, если и Яндекс поступит так.
Это хорошо на самом то деле, но возникает желание почти сразу сделать свой поисковик. Че они скрывают опять от меня? Это ведь каждый парится как это вывести, а ему понять не дают. Тяжелое время для кого-то.
Там же столько всего пилить придётся
Если релевантные страницы только по ключам выдавать, то переспамленные сразу в топ влетят.
Мэйл несколько лет назад пытались свой сделать — не вышло. Рамблер от своего отказался (но тут, скорее, просто нерентабельно стало).
Так они все сфинкторы Я бы сфинктором не стал(движек сфинкс). Ничего сложного не вижу … Вытащить домены в базу, вытащить из доменов тексты, просеять на ненужные предлоги, запятые, взять за каркас поиска title и после этого растолкать по тематикам?
Алгоритмика надутуя настолько, что все считают это нереальным. Фактор наигрыша появляется всегда со временем, но если избежать — наговнокодить так, чтобы не заработало невозможно.
Из этого получится поисковый опкод-кэшер на котором они все встряли(что в нем может быть кроме готовый выборки формулировок?) … это чтобы тысячи серверов не содержать Это не сложно на первый взгляд.
Яндексу уже, похоже, серверов не хватает. «Тяжёлые» проекты закрывают, страницы из индекса выбрасывают, да вообще, как только не обижают сайтовладельцев
Чтобы по тематикам растолкать, её сперва нужно определить.
Если не брать в расчёт дополнительные факторы, то статья «пластиковые окна», состоящая только из этой фразы, повторенной 150 раз, будет в топе. При определении релевантности неплохо бы учесть и полезность страницы для пользователя, дабы топ не забился мусорными или натыренными друг у друга статьями. Раньше в Яндексе/Гугле по 10 страниц просматривал, бывало, и даже больше. А сейчас и на вторую-то редко когда лезу.
Вряд ли все нереальным считают. Скорее, делятся на тех, кто понимает сложность, и тех, кому это нафиг не нужно
Это корпоративные Теды могут еще залупнуться, если почуюхают неугодное.
Это бывает ))) Они просто тихонечко закапывают …