唯一用户身份的算法

时间:2014-06-23 11:04:15

标签: security math

我正在为匿名评论(社交网络插件)编写服务。 我必须为每个线程的每个用户生成伪唯一编号。

因此,每个帖子都有一个唯一的编号(例如6345),每个用户都有唯一的ID(9144024)。使用这些信息,我需要在化身数组中生成唯一索引。

假设有312个图像的数组,它是静态的,每次所有图像的顺序都相同。

现在算法看起来像这样:

(post id + user id) % number if images = index

(6345 + 9144024) % 312 = 33

在评论中我用索引33显示图像。问题是,如果有人找到生成图像的方式(图像列表总是按相同顺序),则可以通过图像找到user id。 / p>

例如,如果不将每个帖子数据存储在数据库中,这里的最佳方法是什么。

1 个答案:

答案 0 :(得分:1)

您正在寻找一种单向函数:从用户ID计算图像ID应该很容易,但不是相反的。我想到的第一件事就是使用哈希函数:简单地连接用户id和post id,也许用一些盐,然后计算它的SHA-1哈希,并取模数的模数。

在这种方法中,我将哈希结果解释为单个160位整数。如果您手边没有大整数库,则可以逐步进行模数计算。从最高字节开始,然后在每一步中将当前值乘以2 8 ,添加下一个字节,并减少模312的总和。您也可以简单地取最低32或64位或类似的东西,并执行模数,虽然这种方法的结果可能不如上面概述的那样均匀分布。