Коды для скретч-карт - PullRequest
       32

Коды для скретч-карт

1 голос
/ 21 сентября 2011

Я постараюсь быть простым, понятным и прямым. Моя проблема заключается в следующем: у меня есть проект, где мне нужно генерировать коды для скретч-карт. Карты Scrath печатаются так же, как те, которые вы используете для зарядки вашего мобильный телефон.

Система состоит в том, что люди покупают карты, получают коды на картах, затем вызывают сервер TOIP (Asterisk) и вставляют код для доступа к услуге. Дано три попытки ввести правильный код.

Я подумал сделать PHP-программу для генерации кодов тезисов, поэтому мне, безусловно, нужно пройти через PRNG (генератор псевдослучайных чисел). Мои ограничения:

- Поскольку люди звонят, код не должен быть слишком длинным, но достаточно длинным, чтобы обеспечить безопасность.

- Мне нужно, чтобы система была достаточно быстрой, когда сравнивается введенный код и тот, который хранится в базе данных (необходим для статистических целей).

Итак, мои вопросы:

- Правильно ли использовать PRNG?

-Если да, знаете ли вы достаточно сильное, чтобы генерировать хорошие случайные числа?

-Какие стандарты используются в промышленности?

-Как сделать алгоритм сравнения достаточно быстрым, если сравнение выполняется по миллиону кодов?

Спасибо за ваше время и ответы.

1 Ответ

3 голосов
/ 21 сентября 2011

Да, PRNG будет работать нормально после небольшой настройки.

http://en.wikipedia.org/wiki/Random_password_generator

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

после того, как число сгенерировано, вы должны проверить, существует ли оно в БД или нет, прежде чем вставлять.

Обычно, 16 символов / цифр используются в промышленности.Вы также можете сгенерировать 20-значные числа, чтобы ускорить весь процесс.

Чтобы ускорить сопоставление, необходимо проиндексировать поле в базе данных.скорее всего это будет char (16) или char (20).

Примечание: поскольку varchar здесь не нужен, лучшим вариантом будет char.

Для быстрого сравнения сохраните механизм таблиц Mysql в качестве MYISAM.

...