2010-11-19 23 views
0

私はURL短縮のための最良のアルゴリズムが何であるか疑問に思っていました。私はほとんどの人が以下のことをしていることに気づいた。ベストURL短縮アルゴリズム

1)データベースから一意の自動生成IDを取得する。 2)固有の自動生成IDをベース64値にエンコードします。

以前のURLが何であるかは、ユーザーには明らかです。ユーザーがどのアルゴリズムを使用しているか把握するのが難しくなるようにするにはどうすればよいですか?より良い乱数を生成し、ジョンがランダムにIDを生成

+0

以前のURIとはどういうことがユーザーにとって明らかになると思いますか?そして、すべてのURIが実際に所属するウェブアドレスを開こうとしています。だから私はユースケースやアルゴリズムを隠そうとしている理由を得ることができません。ユーザーがそれを予測したとしても、それは何ですか?または、短い一意の文字列を生成してそれをいくつかのURIと関連づけたいだけのプログラミング演習ですか? –

答えて

1

は、あなたがそれを

EDITをハッシュするSHAを使用することができますしてもよいし、 をありがとう既に使用されているかどうかを確認してください。

1

を指摘したように、それをハッシュ:

はTESH

+0

2人で同じ乱数を同時に取得するとどうなりますか?それをどうやって説明しますか?そのため、テーブルに値を挿入した後に自動生成IDを使用していたのです。私はmysqlを使用しています。私はテーブルのいくつかのタイプのロックをして、それが存在するかどうかを確認する必要があります。それが存在する場合は、別の乱数を試してみてください。 – MindGame

+0

生成後、番号がすでに存在するかどうかを確認します。再生しない場合。再生回数が多すぎる場合。 Uはバケツのサイズを増やす必要があります – vinothkr

1

まず第一に、それは、URLに認証情報(例えばユーザー名とパスワード)を置くことはお勧めできません(など、ユーザーが簡単にコピー/貼り付けリンクで自分のパスワードを明らかにする)。あなたはURLが短縮サービスに追加された順序をあいまいにしたい場合は、あなたが実行不可能すなわち、このような「不可逆的」とみなされるMD5またはSHA1(、などの暗号ハッシュ関数の出力を使用することができ、言っ

出力からの入力を得るために)、base-64はそれを符号化し、例えば8文字をとる。ハッシュ関数への入力は、URL(場合によっては現在の時刻)でもかまいません。

+0

私はあなたの考えを試しました。それから私は64をエンコードしました。長い文字列YzRjYTQyMzhhMGI5MjM4MjBkY2M1MDlhNmY3NTg0OWを取得します。私はこれの最初の8文字を取ると言っていますか?もし私がそうしたら、最初の8つのURLが以前のURLのために存在していないことを確認しなければならないでしょうか? – MindGame