2013-04-16 1 views
0

Я хочу сделать что-то похожее на то, что делает YouTube. Например, это действительный идентификатор видео YouTube didzxUkrtS0Пользовательский хеш для уникального ID

Сейчас я храню идентификаторы пользователя с целым числом, и я хочу перевести эти числа на буквенно-цифровую идентификацию в 8 символов. Например: FZ3EY1IC (не шестнадцатеричный)

Я уже знаю, что я могу реализовать его с MD5, а затем взять первые 8 шестнадцатеричных чисел, но он не охватывает весь алфавит.

Что делать, чтобы создать уникальный шаблон с использованием целых чисел, который никогда не должен повторяться?

+0

Возможно, это может помочь http://stackoverflow.com/questions/1051949/map-incrementing-integer-range-to-six-digit-base-26-max-but-unpredictably/1052896#1052896 – galymzhan

+0

Вещь что если я использую только однозначное число (например, 3), оно будет переводиться на 'c' вместо 8 буквенно-цифровых символов. – Pacha

+0

Вы внимательно прочитали ответ? Посмотрите на таблицу в конце ответа, все идентификаторы сопоставляются с 6-символьными уникальными строками. – galymzhan

ответ

0

Сделайте свое целое число длиной 8 бит (добавив байт со случайным значением, если ваше целое число равно 32-битным), это 40 бит данных.

Криптографически шифровать 5 байтов вашего целого с помощью некоторого ключа, который, вероятно, вы хотите сохранить конфиденциальным.

Нарежьте 40 зашифрованных битов в 8 5-битных частей. Кодируйте каждую часть, используя 32 буквенно-цифровых символа. Вы можете использовать разные 32 (из всех 36) символов для каждой части.

Обратное действие тривиально.

+0

Эта идея прекрасна. Спасибо – Pacha

+0

Не идеально, но это определенно будет работать, и его легко реализовать, если у вас уже есть криптографические процедуры шифрования и дешифрования. –

0

Я уверен, что такие сайты, как youtube и bitly, хранят в базе данных большую таблицу, которая переводит алфавитно-цифровые идентификаторы для каждой ссылки на внутренний идентификатор того, для чего они предназначены (либо это, либо оно хранится в ряд). И когда ему нужен новый идентификатор, вычислите случайный и сохраните его. Причина, по которой вам нужно сделать это, - это то, что злоумышленник не может предсказать идентификатор следующего добавляемого контента.

 Смежные вопросы

  • Нет связанных вопросов^_^