Php 在codeigniter中加密时避免使用特定字符?

Php 在codeigniter中加密时避免使用特定字符?,php,codeigniter,Php,Codeigniter,我需要通过URL传递一些加密值。有没有办法避免加密后得到的值中出现斜杠(/)等字符?因为在codeigniter中,斜杠等字符用于分隔URL中的参数。请注意,我不希望有人建议不要在URL中传递加密字符串:)加密后使用PHPurlencode函数:并在处理GET数据的脚本中使用urldecode 一个想法是仅使用0-9和a-f以及可选的x将加密字符串表示为十六进制 但我建议您使用TLS(更好的SSL)来保护您的数据,因为现在您可能使用JS加密数据,以便攻击者可以看到密钥 不要调用当前方案安全性或加

我需要通过URL传递一些加密值。有没有办法避免加密后得到的值中出现斜杠(/)等字符?因为在codeigniter中,斜杠等字符用于分隔URL中的参数。请注意,我不希望有人建议不要在URL中传递加密字符串:)

加密后使用PHP
urlencode
函数:并在处理GET数据的脚本中使用
urldecode

一个想法是仅使用0-9和a-f以及可选的x将加密字符串表示为十六进制

但我建议您使用TLS(更好的SSL)来保护您的数据,因为现在您可能使用JS加密数据,以便攻击者可以看到密钥


不要调用当前方案安全性或加密,而只调用模糊处理

您想要的不是加密(这意味着安全),而是编码。实际上,您的选择基本上是:

  • urlencode(如果希望字符串稍微易读,请使用此选项。这也会使字符串比其他两个选项短)
  • base64(如果您不希望字符串易读,也希望保留字符串中的空间,请使用此选项)
  • hex(如果您不希望字符串易读,也不关心字符串长度,请使用此选项)
我不会选择十六进制。确定是否希望字符串清晰易读,然后从两个字符串中选择一个

class MY_Encrypt extends CI_Encrypt
{

    function encode($string, $key="", $url_safe=TRUE)
    {
        $ret = parent::encode($string, $key);

        if ($url_safe)
        {
            $ret = strtr(
                    $ret,
                    array(
                        '+' => '.',
                        '=' => '-',
                        '/' => '~'
                    )
                );
        }

        return $ret;
    }


    function decode($string, $key="")
    {
        $string = strtr(
                $string,
                array(
                    '.' => '+',
                    '-' => '=',
                    '~' => '/'
                )
            );

        return parent::decode($string, $key);
    }
}
-


OP询问如何将加密字符串传递到url,而不是如何加密,也不是如何保护数据;他正在加密(CI有一个本机加密类,他可能正在使用),喜欢与否,现在需要传递加密数据而不干扰路由器类。这很难理解:OP有一个加密字符串(是的,加密。CI有一个本机加密类,他可能正在使用),现在想将其传递到url。是什么让你认为OP不知道编码和加密之间的区别?是的,我需要一个编码,但它不会产生像斜杠这样的值。好的,抱歉,我现在知道字符串已经加密了,然后需要编码。很抱歉。然后您可以编辑此内容以获得更好的效果或删除此不适当的答案。。!我想要的是一种不会在结果中产生斜杠(/)的编码或加密方法。最好的一种,但请确认另一件事,它会导致过长的URL错误吗?
$key = $this->config->item('encryption_key');

$outboundlink = urlencode( $this->encrypt->encode($segment, $key, TRUE) );

$inboundlink  = rawurldecode( $this->encrypt->decode( $segment, $key) );