2012-09-28 78 views
1

我有一个自动递增的id(一个int),我想将其转换为少量的“可挖掘”。基本上我不希望人们能够访问数据/ 0,数据/ 1,数据/ 2等,并翻遍整个数据库。我正在考虑对内容进行散列处理,但我不确定是否可以保证唯一性。如何从自动递增的整数生成唯一的ID?

假设值的范围是从1到几亿。这可能是其中一个散列算法可以保证这些参数内的唯一性。

如果不是,那么采取什么样的好方法?

我确实考虑过哈希,然后附加ID。

我想避免使用GUID,因为它需要对现有代码进行很多更改,所以我更愿意转换我拥有的数据。

编辑:

为了进一步说明情况 - 这些都被击中的静态资源。我不必去数据库并将其反转或查看其他内容。想象一下产品列表 - 用户可能有一个特定页面的链接,但我不希望他们能够以编程方式遍历每个页面,所以我需要一个非递增的ID。

回答

0

据我所知,散列法旨在根据一些具体数据(例如名字,姓氏等)创建唯一的ID。哈希自动递增的ID不会帮助你很多。如果有人通过输入自动增加的ID来搜索数据库,那么该ID将被传递给散列函数作为参数,并且他仍然会获得他想要的数据。所以我认为更好的解决方案是将其他数据散列以获得唯一的ID。如果你这样做了,那么一个通过你的数据库进行搜索的人就必须知道存储在那里的确切数据(例如他必须知道你的员工的确切名称或他的SSN)。

希望有帮助!

0

如果不需要反向查找,可以使用伪随机函数在散列之前对值进行赋值。