Элементы процесса создания системы пин-кодов для индивидуализации доступа к.
Вот тут давече пытливые умы пытались выяснить тайное значение цифр пин-кодов для теста. Содержимое его, я думаю, мало кому будет интересно. Решил проиллюстрировать несложный механизм создания данных кодов.Первое - генерируется код пользователя, например "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
Похожие записи:
- Защита от спамеров при помощи их же инструментов
- Простая генерация паролей на PHP
- Как “правильно” определять гугльбота на PHP


