Hm. Я бы, наверное, попробовал HMACs : создать секретный ключ, известный только вашему приложению. Всякий раз, когда вам нужно раздать новый «билет»,
- объединить идентификатор пользователя и метку времени (скажем, с использованием сериализованных представлений)
- создайте дайджест HMAC, используя «секретный ключ» в качестве ключа подписи
Затем раздайте тройку (идентификатор пользователя, метка времени, дайджест) другим лицам. Чтобы получить такой билет, просто сделайте то же самое:
- извлечь идентификатор пользователя и метку времени из тройки.
- генерирует HMAC, как описано выше, из этой информации
Сгенерированные дайджесты должны совпадать, в противном случае кто-то попытался представить вам поддельный билет. Это безопасно, поскольку только ваше приложение знает секретный ключ и, следовательно, может генерировать подходящий дайджест HMAC. Поскольку информация о временной метке возвращается к вам, вы можете выполнить все необходимые тесты в отношении какого-либо временного окна или чего-либо другого.