РЕДАКТИРОВАТЬ: мне нужно создать строку из 7 символов, которая основана на идентификаторе строки - PullRequest
0 голосов
/ 12 мая 2010

РЕДАКТИРОВАТЬ: мне нужно создать строку из 7 символов, которая основана на идентификаторе строки. Поэтому, зная идентификатор изображения и секретный ключ, я должен получить сгенерированную строку.

строка должна содержать символы от "a" до "z" и цифры от 0 до 9.

У меня есть каталог с такими фотографиями

реж / p3 / i2 / s21 / thumb.jpg

сгенерированная строка p3i2s21, затем используется для вычисления пути к изображению.

EDIT: В настоящее время я использую идентификатор изображения: id = 55 тогда я изменяю и получаю путь = 000000055 затем путь = "000/000/055" затем путь = "000/000/055 / thumb.jpg"

готов к использованию!

теперь я хочу что-то более умное, потому что легко отследить все изображения с сервера, потому что идентификаторы последовательны: 1, 2, 3, 4, 5, 6 ...

поэтому я должен подумать о создании из 55 строки длиной 7 символов, которая не будет перекрываться с другими числами. Я даже могу преобразовать 55 в 0000055 и из этого преобразовать в строку длиной 7 символов, используя секретную строку. затем, когда я получил секретную строку и идентификатор, я хочу получить эту строку длиной 7 символов.

Возможно ли это? я думал о hases, но они используют только 0-9 и a-e и больше символов ..: s

Ответы [ 2 ]

1 голос
/ 12 мая 2010

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

Кроме того, на самом деле нет простого способа надежно выбрать произвольный путь, «сжать» его до 7 символов, а затем снова получить путь из этих семи символов.

0 голосов
/ 12 мая 2010

Я бы добавил новый столбец в вашу таблицу для хранения значения GUID. Таким образом, у вас есть непоследовательный идентификатор.

Если вы не можете использовать GUID и действительно нуждаетесь в нем длиной 7 символов ... хорошо, я бы в любом случае сгенерировал GUID, возьмите (первый / последний) 7 символов, убедитесь, что он уникален, и сохрани это. Если бы он не был уникальным, я бы сгенерировал другой GUID, пока он не был.

Кстати, это очень похоже на ответ Эрика; Я просто хотел упомянуть GUID конкретно.

...