js解码的函数需要运行在通过a.php生成的b.html中,加密要求不高,但是不要base64
自己改良过,由于php和js编码不同,造成无法还原http://topic.csdn.net/u/20121026/21/aa481d57-5268-4377-844a-11e0abf9fdd0.html?seed=358554303&r=80007043#r_80007043
自己改良过,由于php和js编码不同,造成无法还原http://topic.csdn.net/u/20121026/21/aa481d57-5268-4377-844a-11e0abf9fdd0.html?seed=358554303&r=80007043#r_80007043
<script>
function compile(code) {
var c=String.fromCharCode(code.charCodeAt(0)+code.length);
for(var i=1;i<code.length;i++){
c+=String.fromCharCode(code.charCodeAt(i)+code.charCodeAt(i-1));
}
return escape(c);
}
document.write(compile('ab中cd'));
</script><?php
echo compile('ab中cd');
function compile($code) {
$code = array_values(unpack('n*', iconv(strlen('汉')==2 ? 'gbk' : 'utf-8', 'ucs-2', $code)));
$c[] = $code[0] + count($code);
for($i=1; $i<count($code); $i++){
$c[] = $code[$i] + $code[$i-1];
}
$r = '';
foreach($c as $v) {
if($v < 256) $r .= urlencode(chr($v));
else $r .= '%u' . strtoupper(dechex($v));
}
return $r;
}
GBK环境中结果
f%C3%u4E8F%u4E90%C7 f%C3%u4E8F%u4E90%C7
function compile($code) {
$code = array_values(unpack('n*', iconv(strlen('汉')==2 ? 'gbk' : 'utf-8', 'ucs-2', $code)));
$c[] = $code[0] + count($code);
for($i=1; $i<count($code); $i++){
$c[] = $code[$i] + $code[$i-1];
}
$r = '';
foreach($c as $v) {
if($v < 256) $r .= urlencode(chr($v));
else $r .= '%u' . strtoupper(dechex($v));
}
return $r;
}
echo compile('钓鱼岛是中国的');
?><br/>
<script>function compile(code) {
var c=String.fromCharCode(code.charCodeAt(0)+code.length);
for(var i=1;i<code.length;i++){
c+=String.fromCharCode(code.charCodeAt(i)+code.charCodeAt(i-1));
}
return escape(c);
}
document.write(compile('钓鱼岛是中国的'));
</script>运行结果
%u949A%u1310F%uF917%uC2CA%uB45C%uA52A%uCD81
%u949A%u310F%uF917%uC2CA%uB45C%uA52A%uCD81 请教一下,您这个函数输入的字符串第二位不能是汉字,如“钓鱼岛”,如果第二位是字母就没问题。
$code = array_values(unpack('n*', iconv(strlen('汉')==2 ? 'gbk' : 'utf-8', 'ucs-2', $code)));[code]
问题应该就在这两句里,因为第二行的$code[0]值已经错误了
找到问题了,可惜不会改