Одна из причин, по которым я шифрую идентификаторы в общедоступных URL-адресах, заключается в том, что темпы роста бизнеса не всегда общедоступны.
Если текущие идентификаторы можно определить, просто создав новую учетную запись пользователя или загрузив изображение, то внешнее лицо может рассчитать скорость роста (или верхний предел), выполняя это на регулярной основе и наблюдая, сколько идентификаторов было используется в течение прошедшего времени.
Является ли это стагнацией или экспоненциальным взрывом, я хочу иметь возможность контролировать выпуск этой информации вместо того, чтобы позволить конкурентам или бизнес-аналитикам самим ее выводить.
Автономными примерами этого являются счета и номера чеков. Если вам регулярно выставляют счета или платят компании, вы можете увидеть, сколько счетов или чеков они выписали за этот период времени.
Вот модуль CPAN (Perl), который я поддерживаю, который шифрует 32-битные идентификаторы с использованием двустороннего шифрования на основе SkipJack:
http://metacpan.org/pod/Crypt::Skip32
Это прямой перевод алгоритма Skip32, написанный на C Грегом Роузом:
http://www.qualcomm.com.au/PublicationsDocs/skip32.c
Использование этого подхода отображает каждый 32-битный идентификатор в (фактически случайный) соответствующий 32-битный номер, который может быть возвращен обратно в исходный идентификатор. Вам не нужно ничего больше сохранять в своей базе данных.
Я конвертирую зашифрованный идентификатор в 8 шестнадцатеричных цифр для отображения в URL.
Как только ваши идентификаторы приблизятся к 4,29 миллиардам (32-битным), вам нужно будет планировать расширение структуры URL для поддержки большего, но мне нравится иметь более короткие URL как можно дольше.