生成唯一(可能自动递增)id 的算法
我需要为我的应用程序生成唯一的 ID,并且我正在寻找合适的算法。我更喜欢这样的 --
YYYY + MM + DD + HH + MM + SS + <随机盐> + <从前面的值派生出来的东西>
F.ex。 -
20100128184544ewbhk4h3b45fdg544
我正在考虑使用 SHA-256
或其他东西,但生成的字符串不应该太长。我可以使用 UUID
但同样,它们太长并且保证它们仅在一台机器上是唯一的。
我欢迎建议、想法。我的编程语言是Java。
编辑: ID 不需要加密安全。我正在研究更简单的哈希算法,例如 Dan Bernstein 等的算法。
I need to generate unique ids for my application and I am looking for suitable algorithms. I would prefer something like this --
YYYY + MM + DD + HH + MM + SS + <random salt> + <something derived from the preceding values>
F.ex. -
20100128184544ewbhk4h3b45fdg544
I was thinking about using SHA-256
or something but the resultant string should not be too long. I could use UUID
but again, they are too long and they are guaranteed to be unique on only one machine.
I would welcome suggestions, ideas. My programming language is Java.
Edit: The ids need not be cryptographically secure. I am looking at simpler hashing algos like the one by Dan Bernstein, etc.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用该 SHA-256,然后仅从结果中取出前 10 个字节(或者您喜欢的任意数量,根据您的喜好平衡长度和唯一性)。
You could use that SHA-256 and then only take the first 10 bytes from the result (or however many you like, balancing length and uniqueness however you like).
所以我终于解决了这个问题 -
谢谢大家的回复。
So I have finally settled for this -
Thank you all for the response.
试试这个:
Try this:
我想如果你使用 SHA1(MD5(YYYYMMDDHHMMSS + YourSystemName + ClientName)) 40 个字符就可以了..;)
I think if you use SHA1(MD5(YYYYMMDDHHMMSS + YourSystemName + ClientName)) u'll be fine with 40 chars.. ;)