Алгоритм генерации уникальных (возможно, автоматически увеличиваемых) идентификаторов - PullRequest
1 голос
/ 28 января 2010

Мне нужно создать уникальные идентификаторы для моего приложения, и я ищу подходящие алгоритмы. Я бы предпочел что-то вроде этого -

YYYY + MM + DD + HH + MM + SS + <random salt> + <something derived from the preceding values>

f.ex. -

20100128184544ewbhk4h3b45fdg544

Я думал об использовании SHA-256 или о чем-то, но результирующая строка не должна быть слишком длинной. Я мог бы использовать UUID, но опять-таки они слишком длинные и гарантированно будут уникальными только на одной машине.

Я бы приветствовал предложения, идеи. Мой язык программирования - Java.

Редактировать: Идентификаторы не обязательно должны быть криптографически безопасными. Я смотрю на более простые алгоритмы хеширования, такие как Дэн Бернштейн и т. Д.

Ответы [ 4 ]

0 голосов
/ 28 января 2010

Итак, я наконец-то согласился -

d = YYYYMMDDHHMMSS
hash = d + sha256(d + random_salt)[:10]

Спасибо всем за ответ.

0 голосов
/ 28 января 2010

Попробуйте это:

java.security.messageDigest()
0 голосов
/ 28 января 2010

Вы можете использовать этот SHA-256, а затем взять только первые 10 байтов из результата (или сколько хотите, баланс длины и уникальности, сколько хотите).

0 голосов
/ 28 января 2010

Я думаю, что если вы используете SHA1 (MD5 (ГГГГММДДЧЧММСС + YourSystemName + ClientName)) у вас все будет хорошо с 40 символами ..;)

...