php加密给出URL字符

时间:2013-03-01 07:48:49

标签: php mcrypt

嗨我有一个“/”,编码后是%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);

注意:当我使用这个特殊的字符串和键时,我可以生成一个字符串来解决这个问题。

1 个答案:

答案 0 :(得分: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));