1
xing393939 2013-04-22 10:22:24 +08:00
办法太多了吧,自己弄个就行,用网上的说不定一眼就被人看出来了
|
2
workaholic OP @xing393939 恩,感觉自己写的不太靠谱,最好有开源的,因为要长久使用
|
3
avichen 2013-04-22 10:27:47 +08:00 1
找一个可逆的加密算法不就可以了?
|
4
workaholic OP 都不太理想,主要是结果太长,而且容易造成url数据出错(有特殊字符),希望找个短一些的,固定长度最好,字母数字组合最好
|
5
lululau 2013-04-22 10:54:47 +08:00
什么应用场景?防作弊?用普通的对称加密,AES/DES 即可
|
6
BOYPT 2013-04-22 11:13:44 +08:00
定长这个要求就难了。
不定长AES/DES然后urlencode就好。 |
7
ayang23 2013-04-22 11:21:02 +08:00
难道是想防窃听?对称加密怎么加都解决不了这个问题。考虑用非对称的吧。重要数据用post比较方便吧、、
|
8
master 2013-04-22 11:35:59 +08:00
避免url数据出错没啥,不管啥加密到url最保险的做法基本都是最后BASE64+urlencode吧。。。。。。如果数据本身就长的话,那这么做肯定就更长了。。。。尽可能还是避免get,能post的还是post吧。
|
9
Cadina 2013-04-22 11:37:37 +08:00 1
@workaholic 加密成二进制数据后,用十六进制编码不就可以了?
|
10
xing393939 2013-04-22 13:37:07 +08:00
|
11
workaholic OP @ayang23 不是。这个还真避免不了,因为是放在用户网页里面的一个链接,需要存id值
|
12
workaholic OP @xing393939 谢谢,但是测试了不准,2147483642就不行
|
13
workaholic OP @Cadina 这个看起来太明显了,例如 7FFFFFFF
|
14
binux 2013-04-22 17:48:07 +08:00
条件不明,要求固定长度,但是又不知道你id的长度范围,怎么固定?
需求不明,是不想被中间人知道,还是不想被用户端知道,亦或者仅仅不想在get中展示? |
15
workaholic OP @binux 你的逻辑我很是佩服
|
16
hpyhacking 2013-04-22 20:22:08 +08:00
|
17
qq286735628 2013-04-22 20:24:03 +08:00
之前用过RC4+URLencode
|
18
ljbha007 2013-04-22 20:28:53 +08:00
最简单的办法就是用个密码字符串转成数字然后和ID异或
解密的时候就再异或一次就得到原来的ID了 只要猜不出来密码字符串就很难破解 |
19
binux 2013-04-22 21:12:02 +08:00
如果是不想被用户端知道,那根本就用不着什么加解密算法啊,随便给id建一个映射,保存在服务器端,把key发给用户端就好了,需要id的时候再转回来就完了
|
21
V2SK 2013-04-22 21:54:49 +08:00
@hpyhacking 肯定了,所以说我比较佩服@binux的逻辑嘛
|
22
workaholic OP @ljbha007 恩,这个强度已经足够了,discuz的加密方法就是用的异或,非常经典
|
23
WellWiFi 2013-04-23 00:46:06 +08:00 via iPhone
告诉你个简单办法,如果是1开头,设置1对应xx,2对应xx8,如果是2开头走一个路线设置1对应mm,2对应 k,然后13开头是一种对应方式,解密逆向就行了,非常简单58就是这么做,我还没解开密码,也可以用每过一段时间换一套方法
|
24
xing393939 2013-04-23 09:56:25 +08:00
|
25
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}; } ?> |
26
xing393939 2013-04-23 09:59:54 +08:00 1
sorry 看错了 是有问题,应该是个bug,有时间修复下
|
27
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}; } ?> |
28
summic 2013-04-23 18:28:02 +08:00
@xing393939 小六真帅!
|