如何从 nodejs 中的哈希码生成推荐 link

How to generate a referral link from an Hash code in nodejs

我有一个系统,其中 用户的每个帐户 都有一个 唯一 ID,我不能将该 ID 用作推荐人link 因为它包含破折号 -.

我需要生成一个唯一推荐代码鉴于id,我考虑过使用该 ID 的 sha256。 问题是 sha256 太长,不能用作推荐,但如果我截断它,碰撞机会就会增加。

有什么方法可以在给定 ID 的情况下生成引荐 link?

这是格式 ID:04v23533-680d-1107-j4h1-1c32343c1004

如果您的用户 ID 是随机且唯一的,那么您不能使用它们来生成较短的 ID 而不会发生冲突(因为您实际上是在尝试压缩随机数据)。

但实际上,碰撞是一个问题吗?如果你有 500 个用户,一个截断的哈希值有千亿分之一的几率发生冲突,这真的是个问题吗?取决于你有多少用户,以及你的代码可以有多长。

但是推荐链接不需要保密,它们只需要是唯一的。因此,在最简单的级别上,您可以只生成顺序整数并将其用于 ID 吗?当然,您可以猜出其他有效的推荐 ID,但谁在乎呢?

如果您希望它们更复杂一些,您可以生成随机字符串,并根据数据库中的当前 ID 列表检查它们以确保它们是唯一的。但是,一旦您拥有数百万用户,这可能会变慢。