Суббота , 23 Сентябрь 2017
Как новичку заработать в интернете?
ДомойПубликацииphp и md5 (sha1)

php и md5 (sha1)

Как известно, наверное, многим, md5 представляет из себя «слепок», или, если угодно, «след» строки. на выходе это 16 байтная строка, в идеале уникальная, с одной стороны, для любых 16 байтных строк, а с другой — обеспечивающая существенный разброс значений при малейшем изменении строки-источника.

coding-926242_960_720

К сожалению, алгоритм 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 по умолчанию»).



Рейтинг: 0

Автор публикации

1 610
не в сети 2 дня

x64 (aka andi)

Комментарии: 2347Публикации: 322Регистрация: 02-04-2009
Так себеНеплохоХорошоЗамечательноСупер! (Оценок пока нет)
Загрузка...

13 комментариев

  1. Помогите разломать яндексовский реферер с поиска. Там че то типа того, о чем вы написали.

    Рейтинг: 0
    • Насколько знаю, этого ещё никому не удалось. Реферер содержит сигнатуру, но скорее всего, есть дополнительные параметры, известные только ПС. Не зная их, данную задачу сможет решить если только консилиум математиков laugh

      Рейтинг: 0
      • >> сможет решить если только консилиум математиков
        Вот и пацаны недоумевают созывать или нет?
        Да ладно. Не главное в жизни.

        Рейтинг: 0
        • Так и Яндексу ничего не помешает добавить ещё один параметр (например, ver=2) и изменить алгоритм шифрования.
          Как говорится, пользуйте метрику, уважаемые товарищи босяки laugh

          Рейтинг: 0
          • Ну .. Че это они там вообще раскреативились! УРЛы им покудрявее да калитки такие чтобы кланялись чаще ))))

            Рейтинг: 0
            • Гугл вообще «прикрыл лавочку», даже аналитикой нельзя узнать, по каким фразам люди переходят. Не удивлюсь, если и Яндекс поступит так.

              Рейтинг: 0
              • Это хорошо на самом то деле, но возникает желание почти сразу сделать свой поисковик. Че они скрывают опять от меня? smile Это ведь каждый парится как это вывести, а ему понять не дают. Тяжелое время для кого-то.

                Рейтинг: 0
                • Там же столько всего пилить придётся smile
                  Если релевантные страницы только по ключам выдавать, то переспамленные сразу в топ влетят.
                  Мэйл несколько лет назад пытались свой сделать — не вышло. Рамблер от своего отказался (но тут, скорее, просто нерентабельно стало).

                  Рейтинг: 0
  2. Так они все сфинкторы laugh Я бы сфинктором не стал(движек сфинкс). Ничего сложного не вижу … Вытащить домены в базу, вытащить из доменов тексты, просеять на ненужные предлоги, запятые, взять за каркас поиска title и после этого растолкать по тематикам?

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

    Рейтинг: 0
    • Из этого получится поисковый опкод-кэшер на котором они все встряли(что в нем может быть кроме готовый выборки формулировок?) … это чтобы тысячи серверов не содержать laugh Это не сложно на первый взгляд.

      Рейтинг: 0
      • Яндексу уже, похоже, серверов не хватает. «Тяжёлые» проекты закрывают, страницы из индекса выбрасывают, да вообще, как только не обижают сайтовладельцев smile

        Рейтинг: 0
    • Чтобы по тематикам растолкать, её сперва нужно определить.
      Если не брать в расчёт дополнительные факторы, то статья «пластиковые окна», состоящая только из этой фразы, повторенной 150 раз, будет в топе. При определении релевантности неплохо бы учесть и полезность страницы для пользователя, дабы топ не забился мусорными или натыренными друг у друга статьями. Раньше в Яндексе/Гугле по 10 страниц просматривал, бывало, и даже больше. А сейчас и на вторую-то редко когда лезу.
      Вряд ли все нереальным считают. Скорее, делятся на тех, кто понимает сложность, и тех, кому это нафиг не нужно laugh

      Рейтинг: 0
      • Это корпоративные Теды могут еще залупнуться, если почуюхают неугодное.
        Это бывает ))) Они просто тихонечко закапывают …

        Рейтинг: 0

Оставить комментарий

Ваш email не будет опубликован.Необходимы поля отмечены *

*

Добавьте изображение (jpg/gif/png)

Авторизация

Регистрация

Пароль не введен

Генерация пароля