ほとんどの暗号化(またはハッシュなど)ルーチンの出力は任意のバイナリデータであり、エンコードせずにURLに安全に含めることはできません。
卵のようなメモとして
、urlencode()
を使用するだけです データについては十分なはずです。ただし、標準のURLエンコードは、ランダムなバイナリデータをエンコードするための最もコンパクトな方法ではない場合があります。 Base64
エンコーディングの方が効率的ですが、+
を使用しているため、残念ながら完全にURLセーフではありません。 キャラクター。
function base64url_encode($data) {
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
function base64url_decode($data) {
return base64_decode(strtr($data, '-_', '+/'));
}
(少なくとも現在のバージョンのPHPは明らかに=
を必要としないため、デコード機能を少し簡略化しました。 base64_decode()
への入力の文字のパディング 。)
追伸そもそもランダムトークンを安全に生成するために、例えばを参照してください。 この質問 。