md5( '001' );
↓
dc5c7986daef50c1e02ab09b442ee34f
128ビット(16バイト)データを1バイト2桁の16進表記で32桁の文字列。
もう少し短く表現するには
文字として「0,1,2,...9,a,b,...e,f」しか使っていない。
「a,b,...y,z,A,B,...Y,Z」なども使えば表示桁数を減らせる。
128ビット(16バイト)バイナリデータとして扱う。
md5( '001', true );
bin2hex( md5( '001', true ) );
URLエンコードはかえって長くなる。
urlencode( md5( '001', true ) );
↓
%DC%5Cy%86%DA%EFP%C1%E0%2A%B0%9BD.%E3O
メジャーなBASE64エンコードする
base64_encode( md5( '001', true ) )
↓
3Fx5htrvUMHgKrCbRC7jTw==
「/,+,=」が含まれるので相互に変換すればURLのパラメータとして使用可能に。