単純な数値化は40文字になりますが、工夫すれば37文字まで減らせます。理論上、これ以上短くすることはできません。 任意のユーザー名 ( 2 ~ 20字 ) を入力すると 0000000000000000000000000000000000000 から 1350326852860866918505454791395905535 までの37桁の数値を返します。それ以上の数字はすべて欠番です。つまり、うまく工夫すればそこに更にデータを詰め込めるということです。 ほとんどの人は最初の2桁が13だと思います。最初が13ではない人はみんなユーザー名が20字の人です。 使える文字がちょうど64文字だったので2進数で数値化した後に10進数にしています。復号はその逆です。 そこで多倍長演算のようなものが使われています。 ちなみに実質的な最大値は @yt さんの 1350326852860866918505454791395905465 です。これ以上大きい数字になるユーザーは存在しないし、新たに誕生して変わることもありません。 一回の解凍が若干重い ( 0.02秒 ) ので、キャッシュのような仕組みを利用した方がいいかもしれません。