パブリックURLで識別子を暗号的にスクランブルする理由の1つは、ビジネスの成長率が常にパブリックであるとは限らないためです。
新しいユーザーアカウントを作成するか画像をアップロードするだけで現在のIDを推測できる場合、外部の人はこれを定期的に実行し、その間に使用されたIDの数を確認することで、成長率(または上限)を計算できます。経過時間。
停滞している場合でも、指数関数的に爆発している場合でも、競合他社やビジネスアナリストが自分で推測できるようにするのではなく、この情報の公開を管理できるようにしたいと思います。
このオフラインの例は、請求書と小切手番号です。会社から定期的に請求または支払いを受ける場合は、その期間に会社が書いた請求書または小切手の数を確認できます。
これが私が維持しているCPAN(Perl)モジュールで、SkipJackに基づく双方向暗号化を使用して32ビットIDをスクランブルします。
http://metacpan.org/pod/Crypt::Skip32
これは、GregRoseによってCで記述されたSkip32アルゴリズムの直接翻訳です。
http://www.qualcomm.com.au/PublicationsDocs/skip32.c
このアプローチを使用すると、各32ビットIDが(事実上ランダムな)対応する32ビット番号にマップされ、元のIDに戻すことができます。データベースに余分なものを保存する必要はありません。
スクランブルされたIDをURLに表示するために8桁の16進数に変換します。
IDが42.9億(32ビット)に近づいたら、より多くをサポートするようにURL構造を拡張することを計画する必要がありますが、私はできるだけ長いURLを短くするのが好きです。