WebWost WebWostbeta

Случайные символы на PHP

Генерация уникальных наборов символов, используя PHP.

Al-Sher

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

А нужно ли использовать случайные символы вообще? Конечно стоит! Даже генерация ссылки для активации аккаунта требует случайных символов, ведь иначе её могут подобрать или она вообще может повториться.

Для усложнения подбора этих случайных символов я буду использовать md5 хеш.

MD5 (англ. Message Digest 5) — 128-битный алгоритм хеширования, разработанный профессором Рональдом Л. Ривестом из Массачусетского технологического института (Massachusetts Institute of Technology, MIT) в 1991 году. Предназначен для создания «отпечатков» или дайджестов сообщения произвольной длины и последующей проверки их подлинности. Широко применялся для проверки целостности информации и хранения паролей в закрытом виде.

То есть md5 хеш не дает возможности расшифровки данных. Возможно вы видели сервисы, предлагающие расшифровать md5 хеш и у вас мог возникнуть вопрос: А как же происходит тогда расшифровка? Ведь MD5 хранит информацию в "закрытом" виде. Всё дело в том, что самые простые наборы символов уже давно хранятся в базах таких сервисов, поэтому шифруя какую-нибудь простую строку, например "12345", очень велика вероятность подбора.

Что же нам тогда делать? Какие же защитить данные от расшифровки? Ответ будет прост - использовать соль. 

И так, думаю можно начинать генерировать наши случайные наборы символов.

md5(uniqid('prefix').time());

Как можно было заметить, тут мы используем функции md5,uniqid,time. Давайте разберемся за что каждая из них отвечает. Начнем с простого - time().

Time() - функция возвращает UNIX метку времени, то есть кол-во секунд, прошедших с 1 января 1970 года.

Uniqid('prefix') - Генерация уникального id с префиксом "prefix". Сама по себе функция не генерирует уникального id, так как алгоритм функции зависит от времени, то есть имеется вероятность генерации одинаковых id на разных серверах и именно для этого поддерживается префикс, но он находится в не зашифрованном виде, поэтому md5 спасает ситуацию.

Про функцию md5 описано было выше, но всё же я напомню, что функция генерирует 128 битный хеш строки, что добавляет трудности к расшифроке.

Не стоит забывать prefix сделать уникальным, чтобы усложнить подбор

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

0 Комментариев

Новый комментарий