Я создаю систему с исходным кодом, которую я раздаю в сети для обеспечения приемлемых виртуальных домашних животных. Система будет в основном принадлежать детям. Поскольку я хочу, чтобы он был пригоден для начинающих программистов, в моей системе есть несколько ограничений сложности: он не может использовать библиотеки, которые обычно не поставляются с PHP, и не может касаться базы данных или записывать в другое постоянное хранилище. .
Когда каждый питомец усыновлен, посетитель случайным образом получает одну из серии слегка отличающихся вариаций этого питомца. Вариации изначально выглядят одинаково, но со временем вырастают и становятся разными домашними животными. Посетителю будет предоставлен короткий код в HTML, который ссылается на изображение своего питомца. Так как на стороне сервера нет постоянного хранилища, ссылка на изображение пользователя должна содержать всю информацию, чтобы определить, какого варианта питомца они получили.
На данный момент URL просто содержит идентификатор питомца и идентификатор варианта, который получил пользователь. Проблема в том, что, сравнивая коды друг с другом, пользователи могут выяснить, кто из них оказался с одинаковыми вариациями. Поскольку некоторые вариации встречаются реже, чем другие, пользователи могут легко обнаружить редкие вариации еще до того, как разница станет видимой.
То, что я хотел бы, это система шифрования для деталей в URL. То, что скрывает идентификатор варианта, так что каждый пользователь с высокой вероятностью получает свой URL. Я думал об использовании идентификатора вариации (3 или 4 бита) в качестве младших или старших бит большого случайного числа, но пользователи увидят шаблон в этом. В идеале система шифрования должна быть параметризована так, чтобы в каждой установке моей системы использовалось немного другое шифрование.
В библиотеке PHP mcrypt, возможно, есть что-то полезное, но, похоже, она не очень распространена среди хостеров.
Можно ли здесь использовать простое параметризованное запутывание / шифрование?