用户 ID 应该如何设计?

2019-04-09 10:37:05 +08:00
 imherer
如果用数据库自增 ID 的话很容易被猜出来

之前看腾讯的一些游戏用户 ID 都比较长,例如 204200231,看不出来有什么规律

如何在保证很容易阅读的情况下,又保证不那么容易被猜出来呢?
9036 次点击
所在节点    程序员
39 条回复
freedomshi
2019-04-09 11:36:48 +08:00
自定义格式
Lindp
2019-04-09 11:37:18 +08:00
来学习下,目前我们在使用 UUID,不知道有啥其他的方案吗
honeycomb
2019-04-09 11:42:09 +08:00
参考 objectId,snowflake 这些同时具备自增+随机(或自定义)项的 ID ?
cxh116
2019-04-09 11:45:09 +08:00
maemual
2019-04-09 11:45:47 +08:00
发号器
wunonglin
2019-04-09 11:48:37 +08:00
uuid
imherer
2019-04-09 11:54:57 +08:00
@Lindp
@wunonglin
uuid 感觉有点太长了
imherer
2019-04-09 11:55:21 +08:00
@honeycomb
@maemual
有稍微详细点的资料吗?谢谢!
imherer
2019-04-09 11:56:43 +08:00
@cxh116 这个好像还可以。要是能是纯数字的就跟好了
lihongjie0209
2019-04-09 11:58:26 +08:00
只要是数字都可以枚举

204200231 和 1 的唯一区别就是枚举的难度而已。

不想用自增 ID 可以用 时间戳
cxh116
2019-04-09 12:01:29 +08:00
@imherer 引用文档 " If you need your ids to consist of only numbers, check out Optimus. It's based on Knuth's integer hash method and produces obfuscated integer ids (and does it faster too). There are PHP and Go implementations. "
imherer
2019-04-09 12:03:20 +08:00
@cxh116 嗯,看到了。刚才没细看文档
x4storm
2019-04-09 12:41:45 +08:00
时间戳加随机数
beiping96
2019-04-09 14:07:40 +08:00
Snowflake
arjen
2019-04-09 14:16:23 +08:00
snowflake +1
lps
2019-04-09 14:48:52 +08:00
时间戳+随机数
babedoll
2019-04-09 14:51:37 +08:00
guid?

好吧这个一点都不易读
rogwan
2019-04-09 15:03:59 +08:00
维护一个 ID 池,可以自己控制生成方式。
klgd
2019-04-09 15:04:15 +08:00
容易被猜出来,然后呢?会有什么问题?
shiww
2019-04-09 15:28:26 +08:00
@klgd 敏感信息

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/553247

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX