Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 唯一用户身份算法_Security_Math - Fatal编程技术网

Security 唯一用户身份算法

Security 唯一用户身份算法,security,math,Security,Math,我正在写匿名评论服务(社交网络插件)。 我必须为每个线程的每个用户生成伪唯一编号 因此,每个帖子都有一个唯一的编号(例如6345),每个用户都有一个唯一的id(9144024)。使用这些信息,我需要在化身数组中生成唯一索引 比如说,有一个包含312个图像的数组,它是静态的,并且每次所有图像的顺序都相同 现在算法如下所示: (post id + user id) % number if images = index (6345 + 9144024) % 312 = 33 在评论中,我展示了索引

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

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

比如说,有一个包含312个图像的数组,它是静态的,并且每次所有图像的顺序都相同

现在算法如下所示:

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

(6345 + 9144024) % 312 = 33
在评论中,我展示了索引为33的图片。问题在于,如果有人找到生成图像的方法(图像列表的顺序总是相同的),则可以通过图像找到
用户id


例如,不在数据库中存储每篇文章的数据的最佳方法是什么。

您正在寻找一种单向函数:从用户id计算图像id应该很容易,但不是相反。我想到的第一件事是使用散列函数:简单地将用户id和post id连接起来,也许用一些盐,然后计算其散列,并取图像数的模


在这种方法中,我将散列结果解释为单个160位整数。如果你手头没有一个大的整数库,你可以增量地进行模计算。从最高字节开始,然后在每一步中将当前值乘以28,再加上下一个字节,然后减少求和模312。您也可以简单地取最低的32位或64位或类似的值,并对其执行模运算,尽管这种方法的结果可能比上述方法的分布要不均匀。

我认为您必须将随机性考虑进去。否则,您将能够获得用户id(如果可以获得足够的信息)。也许你可以选择一个随机图像,并将其标记为“正在使用”的线程?