PHP-php中如何对URL参数加密和解密

服务器管理 服务器管理 主题:1035 回复:2217

PHP-php中如何对URL参数加密和解密

偏爱自由 发布于 2017-10-23 字数 302 浏览 1239 回复 4

类似于http://www.xxx.com/id_XNDI5NDkxNzUy.html
中间的ID是加密的,同时获取到后可以解密。
可以支持加密中文。
除过base64这种方案。不需要使用数据库支持,纯粹使用算法解决。
同时要求加密后的字符串越短越好。因为是要放在URL中,长度有限制。

求大师解答。谢谢。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(4

甜柠檬 2017-10-28 4 楼

这个做出来吗?求同样的问题

清晨说ぺ晚安 2017-10-25 3 楼

手册里的加密解密算法, 测试可以支持中文。

function encrypt($str, $key)
{

Add PKCS7 padding.

$block = mcrypt_get_block_size('des', 'ecb');
if (($pad = $block - (strlen($str) % $block)) < $block) {
  $str .= str_repeat(chr($pad), $pad);
}

return mcrypt_encrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);

}

function decrypt($str, $key)
{
$str = mcrypt_decrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);

# Strip padding out.
$block = mcrypt_get_block_size('des', 'ecb');
$pad = ord($str[($len = strlen($str)) - 1]);
if ($pad && $pad < $block && preg_match(
      '/' . chr($pad) . '{' . $pad . '}$/', $str
                                        )
   ) {
  return substr($str, 0, strlen($str) - $pad);
}
return $str;

}

推荐看一下手册:http://php.net/manual/en/function.mcrypt-encrypt.php

泛泛之交 2017-10-25 2 楼

如你所言,可以使用base64这种方式实现。其实只要是对称加密算法,都是可以的。
这里介绍几个对称加密算法,可以去百度其javascript实现:

DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES

瑾兮 2017-10-25 1 楼

用过这个算法,加密后长度可以接受:

http://rubel.iteye.com/blog/904426

改写成PHP即可。