2014-10-09 885 views
0

我使用Parse(www.parse.com)在我的項目的一個後端。生成字符串HASH(唯一的隨機)在JavaScript

我想通過將當前日期和時間在Java腳本的每次生成唯一的隨機(Promocode)。隨機應該是可讀的字母/數字。

我知道在谷歌搜索隨機生成過程。但我不確定這是否總是獨一無二的。所以要檢查一下,每次我必須聯繫後端,是否有任何現有的隨機匹配當前的隨機。這是一個漫長的過程。由於我需要在註冊過程中執行此過程,因此我需要一個更好的解決方案。

任何人都可以幫忙嗎?

+0

爲什麼聯繫後端這麼長的過程?我想,這應該不會超過500毫秒。 – fracz 2014-10-09 06:20:53

+0

那麼你究竟想要什麼,我不清楚。 您希望保留已存在的「唯一編號」的內存副本,通過它您可以檢查您生成的編號是否已經存在於副本中。我是否正確地理解你? – 2014-10-09 06:21:55

+0

@WojciechFrącz:考慮有重複3個電話去和未來的,因爲它是重複的隨機3次(如果DB尺寸增加一天一天可能發生),這將是惱人誰是未來註冊用戶。 – Jayaprakash 2014-10-09 06:56:43

回答

0

什麼我可以從你的問題明白的是,你想有一個好的哈希函數確保值是唯一的每一次這樣你就不必做檢查的長期處理的值是否是唯一的或者已經存在。

首先讓我清楚了一些東西,哈希沒有並不一定意味着「獨特的」,但他們都應該是獨特的足夠的「。對於JS最好的哈希庫,你應該檢查出crypto.js

他們有各種不同的散列函數可用,看看這個例子:

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha256.js"></script> 
<script> 
    var hash = CryptoJS.SHA256("Message"); 

    alert(typeof hash); // object 

    alert(hash); // 2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91 
</script> 

我的意思是看看由哈希生成的值函數..具有該值的副本的可能性非常渺茫。所以,你可以放心地使用那個,或者挖出圖書館來使用你認爲最適合你的圖書館。

+0

嗨阿卜杜勒,感謝您的迴應。其實我已經看過Google CryptoJS了。我所關心的是,谷歌提供的所有算法都具有很長的價值(如16,32等)。由於它是促銷代碼功能,我需要它隨機可讀(如5至10個字符)。你能理解我的觀點嗎? – Jayaprakash 2014-10-09 06:45:46

+0

因此,您生成的每個促銷代碼都會發送回服務器以檢查它是否存在? – 2014-10-09 06:48:17