以伪随机方式将数字1映射到1的有效方法?

问题描述 投票:0回答:1

我不想将原始用户ID返回到前端。很多人通过生成随机ID并检查它们是否已经在数据库中来解决此问题。我想找到一种在1到1的已知范围内映射数字的方法。通过这种方法,我仍然可以在内部使用自动递增的ID,但可以将伪随机映射的ID返回到前端。

我可以确定性地将所有数字从1转换为N,但我想知道是否有更有效的方法。

algorithm math api-design
1个回答
0
投票

您可以选择一个随机数,并使用按位XOR操作在前端ID和数据库ID之间切换。

这可能很容易进行逆向工程,但是非常容易使用。

这是JavaScript中的示例:

const seed = 123;
const internalIds = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(internalIds.join(','));
const frontIds = internalIds.map(id => id ^ seed);
console.log(frontIds.join(','));
const recoveredIds = frontIds.map(id => id ^ seed);
console.log(recoveredIds.join(','));
© www.soinside.com 2019 - 2024. All rights reserved.