为用户生成唯一标识有什么比较简短的哈希算法吗?

2022-03-05 19:29:24 +08:00
 LeeReamond

如题,业务要求需要标记用户,目前对于未登录用户是使用 IP 和浏览器信息对用户进行唯一标识(然后再 hash 一下,变成统一长度),发现一个问题是储存比较占用空间,目前用最短的 sha1 来做,单个用户也需要 40 个字节才能储存的下来,十万个用户这种数量级的话占用内存感觉有点大了。有什么合适一些的更简短的哈希吗?比如 10 个字节或者 20 个字节就能表示的,最好使用广泛一些的,不用自己实现,我这个需求是不太在意碰撞。

谢谢大家。

2854 次点击
所在节点    问与答
27 条回复
LeeReamond
2022-03-06 01:22:38 +08:00
@2NUT 很正常,差不多时间装的差不多的系统,软件环境相似很正常,我找了几个朋友试了试,4 个朋友其中一个跟我结果相同,区分度还是有的
lysS
2022-03-06 04:12:51 +08:00
10 万个 sha1 才 4MB 。。。。
zachlhb
2022-03-06 12:14:37 +08:00
短 uuid 比较合适
sampeng
2022-03-06 13:51:54 +08:00
问题来了。。。现在 web 应用很少很少把数据全部放内存里,通常都是数据库一把梭
2NUT
2022-03-06 15:33:23 +08:00
@LeeReamond #21 不正常, 因为数量统计都没有增加
3035 of 850373 user
Thiece
2022-03-06 17:31:13 +08:00
@LeeReamond
其实用 SHAKE128 或者 SHAKE256 就好
documentzhangx66
2022-03-06 18:41:17 +08:00
我就好奇,10 万用户,为啥要 hash ?直接 int 32 自增主键 ID 作为唯一标志,不就完事了,最大能给 21 亿个用户进行唯一标志。

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

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

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

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

© 2021 V2EX