2017-04-13 13 views
0

自分のID(各ユーザーは一意のIDを持つ)に基づいて、アプリケーション内の各ユーザーごとに一意な32ワード長のハッシュ文字列を生成します。私がこれについて検索していたとき、私は同様の質問を見つけました。 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

これは同じ文字列をもう一度与えるかもしれません、そうですか? 2つの文字列の間の一意性が最後の8文字にあった場合はどうなりますか? – RaR

1

使用MD5

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

関連する問題