1

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

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

前任 -

20100128184544ewbhk4h3b45fdg544

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

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

编辑: id 不需要是加密安全的。我正在研究更简单的散列算法,例如 Dan Bernstein 的散列算法等。

4

4 回答 4

0

试试这个:

java.security.messageDigest()
于 2010-01-28T13:22:45.167 回答
0

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

于 2010-01-28T13:32:03.007 回答
0

所以我终于解决了这个-

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

谢谢大家的回复。

于 2010-01-28T14:25:32.610 回答
-1

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

于 2010-01-28T13:21:58.117 回答