2011-09-22 76 views
1

我正在開發一個應用程序,使現有用戶可以通過電子郵件邀請他們的朋友。在邀請過程中,我生成一個代碼,用於被邀請人點擊註冊的鏈接。從用戶電子郵件生成代碼以生成鏈接,然後發送

目前我使用從他們的電子郵件字符串生成的默認哈希碼,但是這可能是非常明顯和不安全的。

我使用考慮這個:

Random random = new Random(); 
Integer code = random.nextInt() 

但我的Random實例將需要在我的整個應用程序單身?每次應用程序/ jvm重新啓動時,它都會「重置」,從而在兩次產生相同數字的情況下產生可能的碰撞?

編輯其實默認的哈希碼並不壞,攻擊者需要知道有人已經被邀請,以及他們的電子郵件是,並嘗試生成正確的時間框架連桿(其中邀請活躍)。

回答

3

您可以將(當前)日期/時間字符串附加到電子郵件地址以使其唯一。

1

散列算法不能保證唯一的散列,但你可以做的是給出一個唯一的輸入。嘗試結合電子郵件與鹽值或類似的東西。這樣你保證散列是唯一的。

相關問題