function eb(ting)
{
//传入要加密的url
//获取url参数部分
var paraString = ting.substring(ting.indexOf("?")+1,ting.length)
//将加密后的参数重新组合到url中
var rul=ting.substring(0,ting.indexOf("?")+1)+escape(paraString)
//跳转到rul页面呢
location.href=rul
}
解密代码
var urlPara = location.search//获取参数部分
urlPara=unescape(urlPara)//对参数解密
//分析参数
function getPara(paraName){
var reg = new RegExp("[&|?]"+paraName+"=([^&$]*)", "gi")
var a = reg.test(urlPara)
return a ? RegExp.$1 : ""
}
//捕获参数并进行操作
//window.onload = function(){
//var url= getPara("id")//捕获到url参数
//document.getElementById("TextBox1").value = url
//}
js的不可读化处理分为三个方面:压缩(compression)、混淆(obfuscation) 和加密(encryption)。1. 压缩
这一操作的目的,是让最终代码传输量 (不代表代码量, 也不代表文件体积)尽可能小。压缩js的工具,常见的有:YUI Compressor、UglifyJS、Google Closure Compiler 等。
通常在代码压缩的过程中,只改变代码的语法,代码的语义和控制流不会有太大改变。
常见做法是把局部变量缩短化,把一些运算进行等价替换等。代码压缩对于代码保护有一些帮助,但由于语义和控制流基本没变,起不了太大作用。
在压缩层面上,代码不可读只是一种附带伤害,不是最终目的。
2. 混淆
这一操作的目的,是让代码尽可能地不可读,主要用作代码保护。
让代码不可读,增加分析的难度,这是唯一目的。混淆过后文件体积变大一倍也没关系,代码量变多也没关系,运算慢50% 也没关系。
常见的做法有:分离常量、打乱控制流、增加无义代码、检查运行环境如果不对就罢工,等等。
在混淆层面上,代码不可读是最终目的。
值得一提的是,Google Closure Compiler 的 Advance Level Compression 会压缩类和对象的成员,其压缩结果很难分析,也可以认为是一种混淆,但兼容性不太好。
3. 加密
有加密就有解密,意味着加密操作可逆,密文可以明文化。
在Web界,可以称之为加密的东西包括:HTTPS传输、JavaScript实现对称加密或者不对称加密等等。