0

嗨,我有一个“/”,编码后是 %2F。问题是,当我将其添加为 URL 的一部分并打开时,由于 / 之间存在 /,因此会抛出 404。所以我的问题是在 php 中有什么方法可以 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 回答