2012-09-28 106 views
1

我有一個自動遞增的id(一個int),我想將其轉換爲少量的「可挖掘」。基本上我不希望人們能夠訪問數據/ 0,數據/ 1,數據/ 2等,並翻遍整個數據庫。我正在考慮對內容進行散列處理,但我不確定是否可以保證唯一性。如何從自動遞增的整數生成唯一的ID?

假設值的範圍是從1到幾億。這可能是其中一個散列算法可以保證這些參數內的唯一性。

如果不是,那麼採取什麼樣的好方法?

我確實考慮過哈希,然後附加ID。

我想避免使用GUID,因爲它需要對現有代碼進行很多更改,所以我更願意轉換我擁有的數據。

編輯:

爲了進一步說明情況 - 這些都被擊中的靜態資源。我不必去數據庫並將其反轉或查看其他內容。想象一下產品列表 - 用戶可能有一個特定頁面的鏈接,但我不希望他們能夠以編程方式遍歷每個頁面,所以我需要一個非遞增的ID。

回答

0

據我所知,散列法旨在根據一些具體數據(例如名字,姓氏等)創建唯一的ID。哈希自動遞增的ID不會幫助你很多。如果有人通過輸入自動增加的ID來搜索數據庫,那麼該ID將被傳遞給散列函數作爲參數,並且他仍然會獲得他想要的數據。所以我認爲更好的解決方案是將其他數據散列以獲得唯一的ID。如果你這樣做了,那麼一個通過你的數據庫進行搜索的人就必須知道存儲在那裏的確切數據(例如他必須知道你的員工的確切名稱或他的SSN)。

希望有幫助!

0

如果不需要反向查找,可以使用僞隨機函數在散列之前對值進行賦值。