暗号化したいものがあり、get を介して URL に渡します。暗号化したい値は、「019230132_15/10/2012」(下線の後にブラジル形式の日付が続く数字) のようなものです。この値を暗号化すると、「cMZns2q7U2vgD9t+zufUeKextc/WyuFB4WyVMQ=」のようなものが得られますが、URL で GET を介してこれを渡すと問題が発生し、値の真ん中にある「/」がディレクトリの区切り記号であるとブラウザが判断する原因となります。私の暗号化アルゴリズムは次のようなものです:
base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_256,
md5(self::ENCRYPT_SALT),
$value,
MCRYPT_MODE_CBC,
md5(md5(self::ENCRYPT_SALT))
)
);
なぜこれが起こっているのか知りたくありません。値を暗号化および復号化できる方法が欲しいだけです。これまでに存在した中で最も安全な方法である必要はありません。ハッキングする価値はあります。
EDIT1: PHP 関数 urlencode を使用しても機能しません。url_encode が「/」を「%2F」に変換するため、エラー 404 が発生します。Apache で mod_rewrite を使用していることは言及する価値があると思います。
EDIT2:urlencode(urlencode($ value))のように2回使用し、元の値を取得するために2回デコードしてurlencodeを機能させることができました