PHP实现JavaScript Escape()函数加解密2015-04-03 11:26:28

( 2人已投票,[高质量] )
分享: ╬收藏
31.3K

我们常用Javascript做简单的加密操作,幸运的是js就有原生的加密方法,当然你也可以用AES\DES加密数据,安全性提高许多,但同时你不得不载入一些扩展包,下面我们用实例先讲一下PHP的Escape加解密数据:

//javascript
var txt = $(this).html();
txt = escape(txt);

这样就把数据加密了。


如果把这数据传往后右,PHP该如何还原这段代码呢

下面提供两个有用的模拟函数原型(可以直接用、已测试)

/**
 * @function 解密前台Escape加密过的数据
 * @param string
 * @return string
 */
function unescape($str)
{
$ret = '';
$len = strlen($str);
for ($i = 0; $i < $len; $i ++)
  {
if ($str[$i] == '%' && $str[$i + 1] == 'u')
    {
$val = hexdec(substr($str, $i + 2, 4));
if ($val < 0x7f)
$ret .= chr($val);
else
if ($val < 0x800)
$ret .= chr(0xc0 | ($val >> 6)) .
chr(0x80 | ($val & 0x3f));
else
$ret .= chr(0xe0 | ($val >> 12)) .
chr(0x80 | (($val >> 6) & 0x3f)) .
chr(0x80 | ($val & 0x3f));
$i += 5;
    } else
if ($str[$i] == '%')
      {
$ret .= urldecode(substr($str, $i, 3));
$i += 2;
      } else
$ret .= $str[$i];
  }
return$ret;
}
/**
 * PHP实现加密Escape 支持多种编码方式
 * @param string
 * @param input coding
 * @param output coding
 */
function escape($string, $in_encoding = 'UTF-8',$out_encoding = 'UCS-2') {
$return = '';
if (function_exists('mb_get_info')) {
for($x = 0; $x < mb_strlen ( $string, $in_encoding ); $x ++) {
$str = mb_substr ( $string, $x, 1, $in_encoding );
if (strlen ( $str ) > 1) { // 多字节字符
$return .= '%u' . strtoupper ( bin2hex ( mb_convert_encoding ( $str, $out_encoding, $in_encoding ) ) );
      } else {
$return .= '%' . strtoupper ( bin2hex ( $str ) );
      }
    }
  }
return$return;
}

这样在后台就可以自由的操作前台加密数据了。







头像

snowcoal
  • PHP
  • Escape
  • 加解密

本文标签:

PHPEscape加解密

收藏到我的私密空间

标题:PHP实现JavaScript Escape()函数加解密

作者:花花世界

你暂未登录,请登录后才可收藏至您的私密空间 确认取消
雪炭网

键盘操作 更便捷 -雪炭网雪中送炭-乐趣无限