Hash 如何从自动递增的整数生成唯一id?

Hash 如何从自动递增的整数生成唯一id?,hash,hashcode,uniqueidentifier,Hash,Hashcode,Uniqueidentifier,我有一个自动递增的id,一个整数,我想把它转换成一些不太可能的东西。基本上,我不希望人们能够访问数据/0、数据/1、数据/2等,并破坏我们的整个数据库。我正在考虑对ID进行哈希运算,但我不确定是否可以保证唯一性 假设值的范围是从1到两亿。可能是其中一个哈希算法可以保证这些参数内的唯一性 如果不是,那么采取什么好方法 我考虑过散列,然后附加ID。< /P> 我试图避免使用GUID,因为它需要对现有代码进行大量更改,所以我更愿意转换我拥有的数据 编辑: 为了进一步解释这种情况,这些都是静态资源。我不

我有一个自动递增的id,一个整数,我想把它转换成一些不太可能的东西。基本上,我不希望人们能够访问数据/0、数据/1、数据/2等,并破坏我们的整个数据库。我正在考虑对ID进行哈希运算,但我不确定是否可以保证唯一性

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

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

我考虑过散列,然后附加ID。< /P> 我试图避免使用GUID,因为它需要对现有代码进行大量更改,所以我更愿意转换我拥有的数据

编辑:


为了进一步解释这种情况,这些都是静态资源。我不需要去一个数据库,并扭转它或查找它对其他东西。想象一个产品列表——一个用户可能有一个指向特定页面的链接,但我不希望他们能够以编程方式浏览每个页面,因此我需要一个非递增ID。

据我所知,哈希是为了基于一些具体数据(如姓名等)创建唯一ID。。散列自动递增ID对您帮助不大。如果有人通过输入一个自动递增的ID在您的数据库中进行搜索,该ID将作为参数传递给哈希函数,他仍将获得所需的数据。因此,我认为更好的解决方案是散列一些其他数据以获得唯一ID。如果这样做,则在数据库中搜索的人必须知道存储在其中的确切数据,例如,他必须知道您员工的确切姓名或其SSN


希望有帮助

如果不需要反向查找,则在散列之前使用伪随机的方法对值进行盐处理