如何隐藏用户id
本来因为用户id太短了,不想暴露用户数,就用了uuid,但是后面又觉得uuid显示出来太长了,有没有什么方案可以基于id或者uuid生成12-16位的字符串只有数字和字符串,并且可以逆向生成回来的
如何隐藏用户id
本来因为用户id太短了,不想暴露用户数,就用了uuid,但是后面又觉得uuid显示出来太长了,有没有什么方案可以基于id或者uuid生成12-16位的字符串只有数字和字符串,并且可以逆向生成回来的
生成一个可以逆向生成的12-16位数字和字符串的隐藏方案是一个有趣的问题,但这通常涉及到哈希或编码技术。请注意,任何可逆的转换都可能存在安全风险,因为恶意用户可能尝试逆向这个转换来发现原始ID。
以下是一个基于用户ID或UUID生成较短、可逆字符串的简化方案:
例如,假设您有一个Base32编码的字符串3S4PQR6YTJHCG7262S4QCRDT
(这只是一个例子,实际编码会不同),您可以截断它到16个字符3S4PQR6YTJHCG726
。然后,您可以添加一个校验和或哈希值来确保这个缩短的字符串仍然是唯一的。
请注意,这些方案都有潜在的安全风险。如果攻击者可以访问到这些缩短的ID,并且知道它们是如何生成的,他们可能会尝试逆向工程来发现原始的ID。
为了安全起见,通常建议不生成可以逆向生成的隐藏ID。相反,您可以使用随机生成的令牌或哈希值,这样即使攻击者可以看到它们,他们也无法轻易地找到原始的ID。
如果您确实需要一个较短的唯一标识符,并且不关心其可逆性,您可以考虑使用哈希函数(如SHA-256)和适当的截断来生成一个较短的唯一字符串。但是,请注意,这将增加冲突的风险,尤其是在用户数量非常大的时候。
2 回答1.3k 阅读
2 回答1.2k 阅读
2 回答1.2k 阅读
2 回答1.2k 阅读
3 回答791 阅读
2 回答958 阅读
1 回答846 阅读
HashIds。有多种语言的实现,Golang 的话可以看这个: