【问题标题】:How do I generate a unique id from an auto incremented integer?如何从自动递增的整数生成唯一 ID?
【发布时间】:2012-09-28 21:29:22
【问题描述】:

我有一个自动递增的 id(一个 int),我想将其转换为不太“可挖掘”的东西。基本上,我不希望人们能够访问 data/0、data/1、data/2 等并破坏我们的整个数据库。我正在考虑只对 ID 进行哈希处理,但我不确定是否可以保证唯一性。

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

如果没有,有什么好的方法可以采取?

我确实考虑过散列,然后附加 ID。

我试图避免使用 GUID,因为它需要对现有代码进行大量更改,因此我更愿意转换我拥有的数据。

编辑:

为了进一步解释这种情况 - 这些是受到打击的静态资源。我不必去数据库并将其反转或查找其他内容。想象一下产品列表 - 用户可能拥有指向特定页面的链接,但我不希望他们能够以编程方式浏览每个页面,因此我需要一个非递增 ID。

【问题讨论】:

    标签: hash hashcode uniqueidentifier


    【解决方案1】:

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

    希望有帮助!

    【讨论】:

      【解决方案2】:

      如果不需要反向查找,请在散列之前使用伪随机值对值进行加盐。

      【讨论】:

        猜你喜欢
        • 2011-01-10
        • 2016-09-27
        • 1970-01-01
        • 2012-03-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-11
        • 1970-01-01
        • 2013-04-11
        相关资源
        最近更新 更多