0

こんにちは、エンコード後の「/」は %2F です。問題は、これを URL の一部として追加して開くと、間に / があるため 404 がスローされることです。だから私の質問は、1. 暗号化して、このような特殊文字を決して与えない文字列を取得する 2. 暗号化にソルトを渡す方法があるということです。

ちなみに、以下は私の暗号化方法です:

$string='16';
$key='ec5dc8c8'
$cipher_alg = MCRYPT_TRIPLEDES;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,MCRYPT_MODE_ECB), MCRYPT_RAND); 
$encrypted_string = mcrypt_encrypt($cipher_alg, $key, $string, MCRYPT_MODE_ECB, $iv); 
return base64_encode($encrypted_string);

注:この特定の文字列とキーのセットを使用すると、この問題を引き起こす文字列を生成できます。

4

1 に答える 1

5

これを試して:

return urlencode(base64_encode($encrypted_string));

アップデート:

標準のハッシュ関数を使用して暗号化を行います。URL エンコードできない文字は返されません。

次のようなことを試してください:

$string='16';
$key='ec5dc8c8'
$cipher_alg = MCRYPT_TRIPLEDES;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,MCRYPT_MODE_ECB), MCRYPT_RAND); 
$encrypted_string = mcrypt_encrypt($cipher_alg, $key, $string, MCRYPT_MODE_ECB, $iv); 
$encrypted_string = hash('sha256', "$encrypted_string");
return urlencode(base64_encode($encrypted_string));
于 2013-03-01T07:50:25.827 に答える