2010-11-19 155 views
0

我在想什麼是縮短網址的最佳算法。我注意到大多數人做了以下事情:最佳網址縮短算法

1)從數據庫中獲取唯一的自動生成的ID。 2)將唯一的自動生成的ID編碼到Base 64值。

它對用戶來說顯而易見的是前一個url的可能性。我能做些什麼來讓用戶難以弄清楚我正在使用哪種算法?

謝謝 TESH

+0

您認爲用戶會明白以前的URI可能是什麼?而所有的URI實際上都會打開它們所屬的網址。所以我無法獲得用例或者你試圖隱藏算法的原因。即使用戶預測它,然後呢?或者它只是一個編程練習,您想要生成一個簡短的唯一字符串並將其與某個URI相關聯? – 2015-02-03 05:54:31

回答

1

可能是你可以使用SHA哈希它

編輯:更好地生成一個隨機數和散列它作爲喬恩指出

1

生成隨機的ID並檢查它是否已被使用?

+0

如果兩個人同時獲得相同的隨機數?我如何解釋?這就是爲什麼我在將值插入到表中後使用自動生成的ID。我正在使用mysql。我是否必須對錶格進行某種類型的鎖定並查看它是否存在。如果存在,請嘗試另一個隨機數字? – MindGame 2010-11-19 13:09:49

+0

生成後檢查號碼是否已經存在。如果不能再生。如果有太多的再生。你需要增加桶大小 – vinothkr 2010-11-22 05:01:07

1

首先,它不是把URL中的認證信息(例如用戶名和密碼)一個好主意(用戶就會發現他們的密碼通過簡單地複製/粘貼鏈接,)。

這就是說,如果你想掩蓋的順序網址添加到縮短服務,您可以使用加密散列函數,如MD5或SHA-1(這被認爲是「不可逆」的輸出,不可行從輸出中獲得輸入),base-64編碼該輸入,並且例如採用八個字符。散列函數的輸入可能是URL(可能也是當前時間)。

+0

我試過你的想法,我的MD5我的自動生成的整數ID。然後我編碼64.我得到一個長字符串YzRjYTQyMzhhMGI5MjM4MjBkY2M1MDlhNmY3NTg0OW。你是說我拿這個的前8個字?如果我這樣做,那麼我將不得不確保那些前8個網址對於以前的網站不存在嗎? – MindGame 2010-11-19 13:13:03