人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

URL圧縮サービスなどで使われている「http://xxx.com/?Tx1aq5」みたいなURLの「Tx1aq5」のような文字列ってどうやって生成しているんでしょうか?使用可能な文字をランダムに並べているのはわかるのですが、URL圧縮サービスのように固有の文字列を振り当てているのはどのようなアルゴリズムをとっているのでしょうか?

●質問者: ikasamt
●カテゴリ:コンピュータ
✍キーワード:URL アルゴリズム サービス ランダム 文字列
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● STRing
●20ポイント

単純に、

http://hoge.example.com == xialm

http://huga.example.org == jklls

みたいにランダム生成した文字列と関連付けるデータベースがあるのだと思いますよ。

実際には有効期限や最終アクセスなどもデータベース化しているかも。

# url は当然ながらダミーです。


2 ● STRing
●20ポイント

失礼しました。そういう次元ではないですね。


双方向関数を使っているのだと思います。

hoge から xxxxx に、 xxxxx から hoge に双方向に変換できる関数です。


# 恥の雪ぎ程度なので詳しくありません……

# むしろ恥の上塗り。

# http://www.example.com/

◎質問者からの返答

説明不足で申し訳ございません。おっしゃるよなことをしているのはわかるのですが、具体的な関数の仕組みが知りたいです。


3 ● mass3
●20ポイント

ビデオの録画予約をするための「Gコード」のアルゴリズムが近いと思います。

http://members.at.infoseek.co.jp/gcode/

出現する要素が限られているのをうまく利用した方法ですね。

◎質問者からの返答

回答ありがとうございます。Gコードって複雑な仕組みをとっているんですね。確かにURL圧縮で使われているアルゴリズムと似ている部分もある気がします。


4 ● kurukuru-neko
●20ポイント

単純な方法

5桁の文字に変換するとする場合、

a-z,A-Z,0-9をが使えるとすると

26+26+10=62種類の文字が使える。

合計 62^5= = 916132832(16進数 369B13E0 ) < 2^31

整数にすると 4byteの整数で表現可能な範囲

1. データベースにURLを連番で登録を行う。

データは登録した順に1?62^5-1の順の間

の数字を連番で付与したUniqueキー

2. 1.の連番を62進数の5桁に変換

3. http:///xxxx.com/?abcdef

でアクセスすると

abcdefを10進数よりUniqueキーにより

検索して、URLにリダイレクトする。

実際には連番ではなく、キーとして5文字の

文字を保存したり、連続割り当てせずに

乱数でに数値を発生させて、未使用の場所を

任意に割り当てを行ったり、事前に乱数で

登録される上限個数を決めておき、事前に

乱数で発生させて重複しないものを順番に

割り当てを行ったり等多様な方法での文字

への変換方法を考えることが出来る。


5 ● ardarim
●20ポイント

ハッシュ+文字エンコードのような感じではないでしょうか。


ハッシュとは、簡単に言って不定長のデータ(例えばURLなどの文字列)を、固定長(例えば数バイト)の「要約データ」に圧縮する技術です。数バイトに要約する以上、全く別の2つのデータ(URL)が同じハッシュを共有してしまう可能性がありますが、ハッシュアルゴリズムには数学的な観点からそのような衝突の可能性が極めて小さいアルゴリズムが選択されているため、そのようなことは滅多に起きないとされています。

ハッシュで検索すれば詳しい技術情報がすぐ出てきます。

例えばこの辺ですね。

http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%83%E3%82%B7%E3%...


ただハッシュ化しただけでは人間が認識できないバイナリデータになりますので、それをさらにBASE64などの文字化ルーチンに通しているのだと思います。BASE64はバイナリデータをアルファベットの大文字(26文字)、アルファベットの小文字(26文字)、数字(0?9までの10文字)、記号(「+」と「/」の2文字)の64文字に変換するもので、インターネット関連のプロトコルではよく使われています。(例えばメールの添付ファイルなどはBASE64でエンコードされていることが多いです)

http://www.atmarkit.co.jp/icd/root/21/5784921.html

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ