2017-04-13 81 views
0

我想根據它們的id(每個用戶都有一個唯一的ID)爲我的應用程序中的每個用戶生成唯一的32字長度哈希字符串。當我在尋找這個時,我在SO中發現了一個類似的問題。 How to generate random SHA1 hash to use as ID in node.js? Gabi Purcaru的回答建議使用crypto模塊的createHash與當前時間和隨機字符串。而不是隨機字符串,我可以使用用戶的唯一ID,以便我可以確保生成的字符串始終是唯一的。但是這總是給我40個字符串長度的散列。但我想要它32個字符串的長度。如何使用相同的方法生成32字長的隨機字符串?在節點中生成自定義長度的唯一隨機字符串

crypto.createHash('sha1').update(current_date + uid).digest('hex'); //This always gives 40-word length string 

我還提到naomik對同一個問題的很好的答案。他建議使用crypto.randomBytes()。但是我們如何確保它不會再次生成相同的字符串?

+0

所以..你有一個唯一的ID,你需要另外一個..什麼呢?你爲什麼不簡單地散列你已有的唯一ID? – Mjh

+0

@Mjh該uid的長度爲5.我想擁有一個唯一的32個字長的字符串。 – RaR

+0

@Mjh我們如何從5個字符串中創建一個32字符串? – RaR

回答

0
crypto.createHash('sha1').update(current_date + uid).digest('hex').slice(0, 32); 

將創建你所需要的

+0

這可能會再次給相同的字符串,對嗎?如果兩個字符串之間的唯一性在最後8個字符上怎麼辦? – RaR

1

採用MD5

let hash = crypto.createHash('md5').update(current_date + uid).digest('hex');

相關問題