各位大侠,你们好
我想给url参数进行加密,以免明文暴露,形如 http://localhost/prodetail.php?id=1111 将这个1111进行加密就可。
在网上搜索了许久,大多都是说base64_encode(),可以这种加密竟然是 MTExMQ== 这种格式,既怪异又不美观,所以不喜欢。
想要一个能把数字,只加密数字参数就行(长度从1位到6位)加密成整齐的密文方法。如 http://localhost/prodetail.php?id=ca87kr9f 这种形式。
我想给url参数进行加密,以免明文暴露,形如 http://localhost/prodetail.php?id=1111 将这个1111进行加密就可。
在网上搜索了许久,大多都是说base64_encode(),可以这种加密竟然是 MTExMQ== 这种格式,既怪异又不美观,所以不喜欢。
想要一个能把数字,只加密数字参数就行(长度从1位到6位)加密成整齐的密文方法。如 http://localhost/prodetail.php?id=ca87kr9f 这种形式。
其实,链接不是给你看的你看了大概是因为你是懂一些传参的机理事实上,WEB的最终用户,绝大部分,鸟都不鸟这个地方~~~~~~~~~~~~~~~~~~~~~~个人经验,多跟客户接触就知道如果到了这里,你还是坚决不喜欢,那就POST吧~~~~~~~~~~~~
function StrCode($string,$action='ENCODE',$key=''){
$string.="";
$action != 'ENCODE' && $string = base64_decode($string);
$code = '';
$key = substr(md5($key),8,18);
$keylen = strlen($key); $strlen = strlen($string);
for ($i=0;$i<$strlen;$i++) {
$k = $i % $keylen;
$code .= $string[$i] ^ $key[$k];
}
return ($action!='DECODE' ? base64_encode($code) : $code);
}
if($_SERVER['QUERY_STRING']){
$_GET=json_decode(StrCode($_SERVER['QUERY_STRING'],"DECODE"));
print_r($_GET);
exit;
}
$QUERY['id'] = "1234";
$QUERY['name'] = "abcd";$url = "?";$url .= StrCode(json_encode($QUERY),"ENCODE");echo "<a href='{$url}'>{$url}</a>";
$code .= $string[$i] ^ $key[$k];
加密字符 ^ 'b' (密钥) == 'a'(原字符)
不是UCHOME的,是PHPWIND里的。是一个带key的base64加解密函数,如果是cookie加密,这个函数就不太好,还要加一些客户端的信息进去更好