Как вычислить короткий запутанный идентификатор фиксированной длины, аналогичный YouTube (например, 2WNrx2jq184)

Каждый пользовательский объект в моей базе данных имеет инкрементный идентификатор (1, 2, 3, ...). URL-адрес для просмотра профиля пользователя содержит идентификатор объекта пользователя; например http://www.example.com/users/1. Таким образом, каждый может видеть, сколько пользователей на сайте, как быстро растет пользовательская база и т. д. Я не хочу разглашать эту информацию.

Я хотел бы преобразовать инкрементный идентификатор в строку фиксированной длины в формате Base58, чтобы URL-адрес выглядел так: http://www.example.com/users/2WNrx2jq184Кроме того, мне нужно обратная функция, которая преобразует строку обратно в исходный идентификатор. Обратную функцию не должно быть легко реконструировать.

Лучший код Python, который я нашел для этой цели, — это https://github.com/JordanReiter/django-id-obfuscator. Это очень хорошо, но в некоторых случаях добавляется 0и/или . , что приводит к строкам не в Base58 и не фиксированной длины. (См. utils.py, строки 24 и 29.)

Как я могу улучшить django-id-obfuscator, чтобы получить запутанные идентификаторы base58 фиксированной длины, или как я могу создать такие запутанные идентификаторы в Python?

5
задан Korneel 6 July 2012 в 10:39
поделиться