我需要为我的应用程序生成唯一的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等人。
答案 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个字符。;)