求get请求中参数加密解密算法

2013-04-22 10:19:54 +08:00
 workaholic
求get请求中参数加密解密算法,例如id值,加密后最好是定长的,字母和数字组合,谢谢
7054 次点击
所在节点    程序员
28 条回复
V2SK
2013-04-22 21:54:49 +08:00
@hpyhacking 肯定了,所以说我比较佩服@binux的逻辑嘛
workaholic
2013-04-22 21:58:42 +08:00
@ljbha007 恩,这个强度已经足够了,discuz的加密方法就是用的异或,非常经典
WellWiFi
2013-04-23 00:46:06 +08:00
告诉你个简单办法,如果是1开头,设置1对应xx,2对应xx8,如果是2开头走一个路线设置1对应mm,2对应 k,然后13开头是一种对应方式,解密逆向就行了,非常简单58就是这么做,我还没解开密码,也可以用每过一段时间换一套方法
xing393939
2013-04-23 09:56:25 +08:00
xing393939
2013-04-23 09:56:54 +08:00
@workaholic
<?php

$a = encode(2147483642);
echo $a, '<br/>';
$b = decode($a);
echo $b;

function encode($id) {
if($id > 100) {
$id = (string) $id;
$len = strlen($id) - 1;
$id = $id{0} . $id{$len} . substr($id, 2, -1). $id{1};
}
$id += 60512868;
$str = base_convert($id, 10, 36);
$str = substr($str, 0, -2) . xchange($str{4}) . xchange($str{5});
return $str;
}

function decode($str) {
$str = substr($str, 0, -2) . xchange($str{4}, 1) . xchange($str{5}, 1);
$id = base_convert($str, 36, 10);
$id -= 60512868;
if($id > 100) {
$id = (string) $id;
$len = strlen($id) - 1;
return $id{0} . $id{$len} . substr($id, 2, -1). $id{1};
} else {
return $id;
}
}

function xchange($s, $decode = 0) {
if($decode) {
$str = "ytuvsrqzxwilng7fed2cbajk1096h53m8o4p";
} else {
$str = "poiuytrewqlkjhgfdsamnbvcxz6541239807";
}
$s = base_convert($s, 36, 10);
return $str{$s};
}
?>
xing393939
2013-04-23 09:59:54 +08:00
sorry 看错了 是有问题,应该是个bug,有时间修复下
xing393939
2013-04-23 10:24:27 +08:00
<?php

$a = encode(2147483642);
echo $a, '<br/>';
$b = decode($a);
echo $b;

$time=microtime(1);
for ($i=0;$i<100000;$i++)
hash('md5', 'string');
echo microtime(1)-$time,': hash/md5<br>';

$time=microtime(1);
for ($i=1;$i<200;$i++) {
$s = encode($i);
//echo $s, '<br>';
echo decode($s), '<br>';

}
echo microtime(1)-$time,': jia/jie<br>';

function encode($id)
{
if ($id > 100) {
$id = (string)$id;
$len = strlen($id) - 1;
$id = $id{0} . $id{$len} . substr($id, 2, -1) . $id{1};
}
$id += 60512868;
$str = base_convert($id, 10, 36);
$l = strlen($str);
$str = substr($str, 0, $l - 2) . xchange(substr($str, -2, 1)) . xchange(substr($str, -1));
return $str;
}

function decode($str)
{
$l = strlen($str);
$str = substr($str, 0, $l - 2) . xchange(substr($str, -2, 1), 1) . xchange(substr($str, -1), 1);
$id = base_convert($str, 36, 10);
$id -= 60512868;
if ($id > 100) {
$id = (string)$id;
$len = strlen($id) - 1;
return $id{0} . $id{$len} . substr($id, 2, -1) . $id{1};
} else {
return $id;
}
}

function xchange($s, $decode = 0)
{
if ($decode) {
$str = "ytuvsrqzxwilng7fed2cbajk1096h53m8o4p";
} else {
$str = "poiuytrewqlkjhgfdsamnbvcxz6541239807";
}
$s = base_convert($s, 36, 10);
return $str{$s};
}

?>
summic
2013-04-23 18:28:02 +08:00
@xing393939 小六真帅!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/66561

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX