- ベストアンサー
短いハッシュの作り方
特に言語には関係がないのでこのカテゴリに。 md5やsha1でハッシュを作ると、32桁か40桁で大文字小文字の区別がないものとなります。 以下のような短いハッシュはどのように作るのでしょうか。 http://am6.jp/asRleJ http://twitpic.com/12zs0a http://bit.ly/axe7hu
特に言語には関係がないのでこのカテゴリに。 md5やsha1でハッシュを作ると、32桁か40桁で大文字小文字の区別がないものとなります。 以下のような短いハッシュはどのように作るのでしょうか。 http://am6.jp/asRleJ http://twitpic.com/12zs0a http://bit.ly/axe7hu
補足
ご回答ありがとうございます。 > 乱数で適当なランダム文字列を生成し、それがデータベースに登録されていなければ採用、 DBに登録済みだったら、登録されていない文字列が出来るまでランダム生成を繰り返し 最大値(≒桁数)と増加割合の問題だとは思いますが、ある程度の登録が発生した後(例えば最大値の半分とか)では「DBに登録済みだったら、登録されていない文字列が出来るまでランダム生成を繰り返し」のコストが勿体無いのではないかと考えておりました。 ハッシュを使用しつつ、衝突時には回避策を取るのがバランスが良さそうですね。 > あるいは、もっと単純に、登録順に振られた番号から、それをそのまま62進変換するだけ、という方法でも実現できます。 用途によりますが、類推が出来ない方が良い場合が多いと思いますので、連番以外の方法を知りたいと思っていました。 いくつかご回答を頂いてみると、6桁のハッシュというのは言語共通などで実装された一般的な関数などではなく、みな独自実装されているという事のようですね。 特に最近、短縮URLに限らず、6桁程度のハッシュに見える値を見かける事が多かったためにこのような質問をさせて頂きました。