我需要为我的应用程序生成唯一的ID,我正在寻找合适的算法。我宁愿是这样的 -生成唯一的(可能是自动递增的)ids的算法
YYYY + MM + DD + HH + MM + SS + <random salt> + <something derived from the preceding values>
F.ex. -
20100128184544ewbhk4h3b45fdg544
我想使用SHA-256
或东西,但结果字符串应该不会太长。我可以使用UUID
,但它们又太长了,它们只能保证在一台机器上是唯一的。
我会很乐意提出建议,想法。我的编程语言是Java。
编辑:该ID不需要密码安全。我期待在简单的散列交易算法,如一个由丹·伯恩斯坦等
UUID保证是唯一*通用*。它使用算法中的MAC地址确保没有两台机器生成相同的UUID。 – kennytm 2010-01-28 13:21:08
GUID有什么问题?它不会比你给出的例子长很多,并且GUID是唯一的 – 2010-01-28 13:21:43
@Kenny:Afaik没有人再使用第一个版本(带有MAC地址的版本)。由于目前许多NIC具有用户可配置的MAC地址,因此无论如何都有点不足。我今天看到的大多数UUID都是版本4. – Joey 2010-01-28 13:25:00