Элементы процесса создания системы пин-кодов для индивидуализации доступа к.

Вот тут давече пытливые умы пытались выяснить тайное значение цифр пин-кодов для теста. Содержимое его, я думаю, мало кому будет интересно. Решил проиллюстрировать несложный механизм создания данных кодов.Первое - генерируется код пользователя, например "43101" - ну это у кого как фантазия, например, в случае с тестом для студентов, номер группы студента (431) и номер студента по списку (01). Получаем $user.
Далее. Берем хэш md5 от специально сформированной строки на основе секретных данных (строка 'MySiteName') и случайных данных (результат работы microtime()). Из него вырезаем 12 символов (а это будут шестнадцатеричные цифры все как на подбор). И, собственно, "распаковываем" из них массив из трех чисел, которые и будут последними тремя частями новоявленного "пин-кода".
function generate_pin($user) {
$hash = md5('MySiteName'.$user . microtime());
$part = substr($hash, 0, 12);
$nums = unpack("n3", $part);
$pin = $user . sprintf("-%04d-%04d-%04d", substr($nums[1],-4),
substr($nums[2],-4), substr($nums[3],-4));
return($pin);
}

Особо любопытных следует предупредить, что "любой" пин-код тут не подойдет. Все сгенерированные пинкоды хранятся в базе и выдаются "под карандашик". (Наверное, помните историю про ажиотаж с "генераторами" номеров карт СТК?)

· Добавьте на news2.ru

Похожие записи:


Прокомментируйте