Идентификаторы, похожие на Youtube, которые меняются соответственно с помощью идентификатора

Я думал о том, как сделать small function который генерирует YouTube-лайк ID и не вызывает столкновений. Кодировка должна быть A-Za-z0-9-_ и скажем, я хочу, чтобы это было 10 characters длинный, который будет равен 64 ^ 10 / Quadrillion1153 Quadrillion возможности.

Это довольно важно быть small из-за того, что это одна из основных функций веб-сайта, и она должна быть достаточно понятной, чтобы ее можно было легко изменить. В течение нескольких секунд в случае возникновения чрезвычайной ситуации.

Это не должно быть secure в том смысле, что мы на самом деле не возражаем против того, легко ли преобразовать обратно в ID как посторонний. Однако это не должно быть шаблоном, таким как:

aaaaaaaaaa
aaaaaaaaab
aaaaaaaaac

Я знаю, что вы могли бы теоретически сделать charset и перебирать его случайным образом, пока у вас не будет 10 случайные символы, но это может столкнуться (я понимаю, что этот шанс невелик, и вы можете выполнить запрос, чтобы увидеть, key был сгенерирован ранее, но я хотел бы сохранить минимальные зависимости и не полагаться на SQL ).

Я также могу представить себе charset из 100 characters как в 0-99 а затем добавить и / или добавить random символы, если length of 10 условие не выполнено. Например:

  • ВАЖНЫЙ: сценарий, изложенный ниже, предполагает A это первый символ в наборе и _ последний.

id: 0 = A+9 random characters

id: 1 = B+9 random characters

id: 99 = _+9 random characters

id: 990 = _A+8 random characters

id: 99999999999999999999 = __________

Я думаю, что это помешает collisions но у меня нет charset из 100 но 64,

Надеюсь, кто-то может бросить некоторые идеи.

  • Update1: Приведенный выше эскиз мог фактически сталкиваются при следующих (и более) обстоятельствах:
  • Если ID является 99 это не значит, что следующий персонаж не может быть A от chance хотя очень маловероятно; Это мог следовательно collide с 990 🙁

  • UPDATE2: Я не думаю, что это все равно столкнется, если мы используем static component после ID и до random component это не является частью charset,

  • Обновлен Sketch (статический компонент будет $):

id: 0 = A$+8 random characters

id: 1 = B$+8 random characters

id: 99 = _$+8 random characters

id: 990 = _A$+7 random characters

id: 999999999999999999 = _________$

1

Решение

как в вашем другом вопросе здесь Проблема обратного кодирования / декодирования идентификатора все, что вы хотите, это преобразовать свой идентификатор, который находится в базе 10, в другую базу, чем 10 …

Вы могли бы просто закодировать это base64 и сделать …

если вы хотите, чтобы оно выглядело как случайное, преобразуйте число раньше … например, просто зафиксируйте его статическим 60-битным значением …

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]