生成唯一(可能是自动递增的)id的算法

时间:2010-01-28 13:19:27

标签: algorithm unique uniqueidentifier random

我需要为我的应用程序生成唯一的ID,我正在寻找合适的算法。我更喜欢这样的东西 -

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

F.ex。 -

20100128184544ewbhk4h3b45fdg544

我在考虑使用SHA-256或其他东西,但结果字符串不应该太长。我可以使用UUID但是,它们太长了,并且只保证在一台机器上是唯一的。

我欢迎建议,想法。我的编程语言是Java。

编辑:ID无需加密安全。我正在寻找更简单的哈希算法,比如Dan Bernstein等人。

4 个答案:

答案 0 :(得分:0)

试试这个:

java.security.messageDigest()

答案 1 :(得分:0)

你可以使用那个SHA-256,然后只从结果中取出前10个字节(或者你喜欢多少个,平衡你喜欢的长度和唯一性。)

答案 2 :(得分:0)

所以我终于解决了这个问题 -

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

谢谢大家的回复。

答案 3 :(得分:-1)

我认为如果您使用SHA1(MD5(YYYYMMDDHHMMSS + YourSystemName + ClientName)),您可以使用40个字符。;)