使用urlencoding / urldecoding和.htaccess问题进行authToken加密

时间:2014-01-10 16:17:46

标签: php .htaccess authentication encryption mcrypt

如果使用url encoding / urldecoding和.htaccess文件进行加密,如何生成令牌。

我也启用了.htaccess,它遇到了这个网址上提到的javascript / php通信问题。 http://www.tequilafish.com/2007/12/06/mod_rewrite-php-how-to-match-urlencoded-plus-sign/

根据帖子的建议,由于前端系统不在我的控制之下,我不能两次urlencode,

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)$ index.php?uri=$1 [QSA,L]

class Crypt {

public static function encrypt($data, $secret) {
   $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
   $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
   $key = pack('H*', $secret);
   return base64_encode($iv . mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv));
   }

public static function decrypt($data, $secret) {
   $data = base64_decode($data);
   $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
   $iv = substr($data, 0, $iv_size);
   $data = substr($data, $iv_size);
   $key = pack('H*', $secret);
   return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv), chr(0));
   }
  }

1 个答案:

答案 0 :(得分:0)

如果你想在url中发送数据,那么你必须使用urlencode以及你在哪里获得数据urldecode。使用urlencode删除所有空格和空格字符和urldecode,您将获得真实数据

示例:

$ abc = urlencode($ abc);

然后将其发送到网址

redirec:authToken encryption with urlencoding/urldecoding and .htaccess issue $ abc

我认为你得到了它:)