我有一个自动递增的id(一个int),我想将其转换为更少“可以”的东西。基本上我不希望人们能够访问数据/ 0,数据/ 1,数据/ 2等,并翻阅整个数据库。我想的只是哈希的ID,但我不确定我是否可以保证唯一性。
假设价值范围从1到几亿。可能是其中一个哈希算法可以保证这些参数内的唯一性。
如果没有,采取什么好方法?
我确实考虑过散列,然后附加ID。
我正在尝试避免使用GUID,因为它需要对现有代码进行大量更改,因此我更愿意转换我拥有的数据。
编辑:
为了进一步解释这种情况 - 这些是被击中的静态资源。我没有必要去数据库并将其反转或查找其他内容。想象一下产品列表 - 用户可能有一个指向特定页面的链接但我不希望它们以编程方式遍历每个页面,所以我需要一个非递增的ID。
答案 0 :(得分:0)
据我所知,哈希旨在根据一些具体数据(例如姓名,姓氏等)创建唯一身份证。散列自动递增的ID不会对你有所帮助。如果有人通过输入自动递增的ID来搜索您的数据库,那么该ID将作为参数传递给哈希函数,他仍将获得他想要的数据。所以我认为更好的解决方案是散列一些其他数据以获得唯一ID。如果您这样做,那么搜索您数据库的人必须知道存储在那里的确切数据(例如,他必须知道您的员工的确切姓名或他的SSN)。
希望有所帮助!
答案 1 :(得分:0)
如果不需要反向查找,请使用伪随机函数在散列之前对值进行加盐。