Я работаю над системой онлайн-билетов, где пользователи смогут самостоятельно распечатывать свои билеты и появляться на мероприятии, где он будет сканироваться (штрих-код), и в идеале человек будет входить. Моя проблема в том, как для создания "кода билета", который удовлетворяет следующим требованиям:
- каждый "код билета" должен быть достаточно отличающимся друг от друга (т.е. не последовательно пронумерован)
- в идеале, билет будет проверен на центральную БД, чтобы предотвратить повторное использование, но ему НЕОБХОДИМО иметь возможность работать вне линии, и в этом случае система должна проверить "действительный" код билета и что он не был используется в этих затворах.
- "код билета" должен быть достаточно мал, чтобы облегчить его при необходимости.
- обладателю билета потребуется только билет, чтобы войти (т.е. нет проверки личности).
Диапазон данных очень мал, в течение 4 дней будет всего около 20 событий с примерно 5000 билетов на одно событие (около 100 000 различных кодов билетов).
Теперь у меня есть несколько полей, которые не напечатаны в билете и неизвестны пользователю, которые я могу использовать для кодирования части "кода билета", поэтому я мог бы использовать EventId, OrderId, EventDate и некоторую соль для создания небольшой "хеш" для части кода (идеи?), но я все еще придерживаюсь идентификатора билета, который является последовательным или GUID (будет слишком длинным)
Итак, любые идеи или указатели на то, как это сделать?