web-dev-qa-db-ja.com

最短生成の一方向ハッシュアルゴリズムは何ですか?

私は一意であることが保証されている24文字の長いIDを持っています。私はそれを7-10(またはさらに短い)文字長に短縮したいと思います。短いIDをランダムに生成した場合、そのshortidが使用可能かどうかを毎回確認する必要があります。 24文字のIDを渡して7〜10文字のハッシュを返すことができる一方向ハッシュアルゴリズムはありますか。

チェックなしで生成されたショートIDが一意であることを保証する他の方法はありますか?

2
ed1t

24文字の文字列よりも10文字の文字列の方がはるかに少ないため、短縮IDが一意であることを保証しますできません。遅かれ早かれ、値willは再利用されます。

IDの生成方法に応じて、実際に実行できることはさまざまです。連続する数値を取得する場合、最後の10文字を取得してもしばらくは機能しますが、X ^ 10の値の後に折り返します。 ID自体が完全にランダムである場合、その10桁を使用して、おそらく一意である別の値を取得できますが、遅かれ早かれ、予期せぬ衝突。しかし、提起された問題は解決できません。

2
Kilian Foth

他の条件が適切であれば、短いIDを連続して割り当てます。 Idを必要とする最初の文字列は1を取得し、2番目は2を取得します。一意であることが保証され、チェックは必要ありません。

0
ddyer