提供URL字符的php加密

提供URL字符的php加密,php,mcrypt,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

嗨,我有一个“/”编码后是%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);
注意:当我使用这组特殊的字符串和键时,我可能会生成一个导致此问题的字符串。

尝试以下操作:

返回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));
试试这个:

返回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));

嗨,我忘了提到,我在创建url的时候做了urlencode。因此我得到了%2F来代替/。我还想让您知道,像+这样的字符在URL编码时不会产生问题;这是一条很长的线。但我的意图也是生成微小的urlOk,将散列类型更改为此处找到的类型。Md5稍微短一点。
sha256
将通知作为未定义的常量抛出,您应该引用它
'sha256'
@Enoba:您不能解码散列,这是一种方法——但您可以用base64\u解码来解码base64\u编码。嗨,我忘了提到,我在创建url时已经完成了urlencode。因此我得到了%2F来代替/。我还想让您知道,像+这样的字符在URL编码时不会产生问题;这是一条很长的线。但我的意图也是生成微小的urlOk,将散列类型更改为此处找到的类型。Md5稍微短了一点。
sha256
将通知作为未定义的常量抛出,您应该引用它
'sha256'
@Enoba:您不能解码散列,这是一种方法——但您可以用base64\u解码来解码base64\u编码。