Как сгенеририровать строку по id?

Здравствуйте! Подскажите пожалуйста. Есть пользователь с закрепленным за ним id (например, 10 цифр). Надо получить уникальную строку из букв и цифр большей длинны (около 200). Надо что бы в любой момент эту строку можно было получить зная только id юзера, не прибегая к БД.

Думал в сторону хеш-функций, что бы получить уникальное число, а вот что с ним дальше делать не пойму.
  • Вопрос задан
  • 2444 просмотра
Решения вопроса 2
RicoX
@RicoX
Ушел на http://ru.stackoverflow.com/
Да хоть так:
echo "0123456789"+"salt1" | shasum -a 512256 | awk '{print $1"salt2"}'

или любая другая логика с хешами, зная соли и начальный ID всегда можно восстановить эту строку.
Ответ написан
@throughtheether
human after all
Есть пользователь с закрепленным за ним id (например, 10 цифр). Надо получить уникальную строку из букв и цифр большей длинны (около 200). Надо что бы в любой момент эту строку можно было получить зная только id юзера, не прибегая к БД.

Наивный (но имеющий место, на мой взгляд) подход таков. Вычисляете 2-3-4 различных хэш-суммы (md5, sha-1, и т.д.) от id + произвольная соль (которую храните глобально). Полученные 'hexdump', т.е. представления хэшей в шестнадцатеричном формате конкатенируете. Результат кодируете в base64. Для достижения необходимой длины может понадобиться: 1) конкатенация хэша с самим собой несколько раз, до кодирования 2) конкатенация результата base64-кодирования с самим собой несколько раз.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы