lbid=gqx><%=gqx%>"
else
Response.Write""
endif
setrs=nothing
conn.close
setconn=nothing
可以把它们改写成VB组件,然后在ASP文件中调用组件即可。
操作步骤如下:
(1)新建一个vb6的activexdll项目
在属性窗口中,命名你的库模块和项目文件(例如项目名lacl,模块名disp),以后在asp文件中,调用的对象名将为lacl_disp
选择vb6中的项目菜单中的references,选中microsoftactivexdataobjects2.0library
(2)编写VB组件
接下来把<欲保护的asp代码>改写成VB组件,代码如下:
以下是引用片段:
publicfunctionhtml_combo(disp_tableasstring)asstring
dimoutstringasstring
dimconnasadodb.connection
dimrstasadodb.recordset
dimsqlstringasstring
setconn=createobject("adodb.connection")
setrst=createobject("adodb.recordset")
sqlstring="select*from"&disp_table&"wherexs=1orderbydateasc"
'以上是在VB中打开数据库操作,数据库中的表名、字段名,你可以根据自己的需要修改
conn.open"dsn=sumnet"
rst.opensqlstring,conn,3,3
ifrst.eofandrst.bofthen
outstring="还没有这类单位信息"
else
rst.movefirst
outstring="lbid="&request("lbid")&">"
endif
html_combo=outstring
rst.close
conn.close
endfunction
写好以上VB代码后,保存项目并开始编译。
(3)生成安装文件
打开visualstudio6中附带的packagedeploymentwizard程序,选择刚才建立的activex项目文件lacl;选择package,选择要打包的脚本或使用默认脚本,选择标准安装,为生成的安装文件选择一个存放目录,选择singlecab.其他均默认;然后单击下一步,安装文件就自动生成了!
(4)在IIS服务器上安装组件
在IIS服务器上运行这个安装文件,把组件安装到服务器上。
(5)在网页中调用组件
以后在ASP文件中,通过调用该组件完成原来的功能。
在网页中调用你制作的组件,方法如下:
以下是引用片段:
<%@language="vbscript"%>
<%
setdiaoyong=server.createobject("lacl_disp.disp")
%>
<%=diaoyong.html_combo("gq")%>
你看,现在Asp文件中的内容只是组件的调用(与以前完全不同),别人即使得到该文件,也无法编辑修改源代码,因为代码都被封装在VB组件中了,对于组件中的代码,外人是无法看到、也不能反编译的!
3、自己编写加密程序
组件加密方法虽然不可破解,但是要求你熟悉VB编程,需要把ASP代码改写成VB组件,工作量很大,所以建议大家自己编程来保护asp代码,其基本思路是:
写一个加密函数base64Encode和解密函数base64Decode,先用加密函数处理<要保护的asp代码>,得到对应的密文hu;然后再用execute(base64Decode(hu))替换<欲保护的asp代码>。
例如我们要保护上面那段asp代码,可以这样操作:
(1)用WORD处理<要保护的ASP代码>
将<要保护的ASP代码>拷到WORD中;在WORD中,把代码里的段落标记(回车换行)全部替换成“水”这个汉字,方法是:
点击“编辑”/替换,光标移到“查找内容”栏,点“高级”/特殊字符,选择“段落标记”;光标移到“替换为”栏,输入“水”,最后点“全部替换”。
同法,把代码中的单引号也全部替换成“加”这个汉字。
(2)编写、运行加密程序
在FrontPage中编写加密程序,该程序中有初始化函数initCodecs、加密函数base64Encode(代码如下),把WORD处理后的代码,copy粘贴在inp=""这句中,最后以test1.asp名存盘;在IE中输入http:
//127.0.0.1/test1.asp本地运行该文件;屏幕上会显示一大段乱码(例如c2V0IHJzPXNlcnZlci5jcmVhd...),这就是《要保护的asp代码》对应的密文!
以下是引用片段:
OPTIONEXPLICIT
constBASE_64_MAP_INIT="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
dimnewline
dimBase64EncMap(63)
dimBase64DecMap(127)
diminp,hu,encode
callinitCodecs'初始化
inp=""'将要保护的asp代码用WORD处理,然后填在此处
hu=base64Encode(inp)'调用函数base64Encode进行加密,得到密文hu
Response.Write(hu)'显示密文
PUBLICSUBinitCodecs()'初始化函数initCodecs
newline="
"&chr(13)&chr(10)
dimmax,idx
max=len(BASE_64_MAP_INIT)
foridx=0tomax-1
Base64EncMap(idx)=mid(BASE_64_MAP_INIT,idx+1,1)
next
foridx=0tomax-1
Base64DecMap(ASC(Base64EncMap(idx)))=idx
next
ENDSUB
PUBLICFUNCTIONbase64Encode(plain)'加密函数base64Encode
iflen(plain)=0then
base64Encode=""
exitfunction
endif
dimret,ndx,by3,first,second,third
by3=(len(plain)\3)*3
ndx=1
dowhilendx<=by3
first=asc(mid(plain,ndx+0,1))
second=asc(mid(plain,ndx+1,1))
third=asc(mid(plain,ndx+2,1))
ret=ret&Base64EncMap((first\4)AND63)
ret=ret&Base64EncMap(((first*16)AND48)+((second\16)AND15))
ret=ret&Base64EncMap(((second*4)AND60)+((third\64)AND3))
ret=ret&Base64EncMap(thirdAND63)
ndx=ndx+3
loop
ifby3 first=asc(mid(plain,ndx+0,1))
ret=ret&Base64EncMap((first\4)AND63)
if(len(plain)MOD3)=2then
second=asc(mid(plain,ndx+1,1))
ret=ret&Base64EncMap(((first*16)AND48)+((second\16)AND15))
ret=ret&Base64EncMap(((second*4)AND60))
else
ret=ret&Base64EncMap((first*16)AND48)
ret=ret'&"="
endif
ret=ret'&"="
endif
base64Encode=ret
ENDFUNCTION
(5)在网页中调用组件
以后在ASP文件中,通过调用该组件完成原来的功能。
在网页中调用你制作的组件,方法如下:
以下是引用片段:
<%@language="vbscript"%>
<%
setdiaoyong=server.createobject("lacl_disp.disp")
%>
<%=diaoyong.html_combo("gq")%>
你看,现在Asp文件中的内容只是组件的调用(与以前完全不同),别人即使得到该文件,也无法编辑修改源代码,因为代码都被封装在VB组件中了,对于组件中的代码,外人是无法看到、也不能反编译的!
3、自己编写加密程序
组件加密方法虽然不可破解,但是要求你熟悉VB编程,需要把ASP代码改写成VB组件,工作量很大,所以建议大家自己编程来保护asp代码,其基本思路是:
写一个加密函数base64Encode和解密函数base64Decode,先用加密函数处理<要保护的asp代码>,得到对应的密文hu;然后再用execute(base64Decode(hu))替换<欲保护的asp代码>。
例如我们要保护上面那段asp代码,可以这样操作:
(1)用WORD处理<要保护的ASP代码>
将<要保护的ASP代码>拷到WORD中;在WORD中,把代码里的段落标记(回车换行)全部替换成“水”这个汉字,方法是:
点击“编辑”/替换,光标移到“查找内容”栏,点“高级”/特殊字符,选择“段落标记”;光标移到“替换为”栏,输入“水”,最后点“全部替换”。
同法,把代码中的单引号也全部替换成“加”这个汉字。
(2)编写、运行加密程序
在FrontPage中编写加密程序,该程序中有初始化函数initCodecs、加密函数base64Encode(代码如下),把WORD处理后的代码,copy粘贴在inp=""这句中,最后以test1.asp名存盘;在IE中输入http:
//127.0.0.1/test1.asp本地运行该文件;屏幕上会显示一大段乱码(例如c2V0IHJzPXNlcnZlci5jcmVhd...),这就是《要保护的asp代码》对应的密文!
以下是引用片段:
OPTIONEXPLICIT
constBASE_64_MAP_INIT="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
dimnewline
dimBase64EncMap(63)
dimBase64DecMap(127)
diminp,hu,encode
callinitCodecs'初始化
inp=""'将要保护的asp代码用WORD处理,然后填在此处
hu=base64Encode(inp)'调用函数base64Encode进行加密,得到密文hu
Response.Write(hu)'显示密文
PUBLICSUBinitCodecs()'初始化函数initCodecs
newline="
"&chr(13)&chr(10)
dimmax,idx
max=len(BASE_64_MAP_INIT)
foridx=0tomax-1
Base64EncMap(idx)=mid(BASE_64_MAP_INIT,idx+1,1)
next
foridx=0tomax-1
Base64DecMap(ASC(Base64EncMap(idx)))=idx
next
ENDSUB
PUBLICFUNCTIONbase64Encode(plain)'加密函数base64Encode
iflen(plain)=0then
base64Encode=""
exitfunction
endif
dimret,ndx,by3,first,second,third
by3=(len(plain)\3)*3
ndx=1
dowhilendx<=by3
first=asc(mid(plain,ndx+0,1))
second=asc(mid(plain,ndx+1,1))
third=asc(mid(plain,ndx+2,1))
ret=ret&Base64EncMap((first\4)AND63)
ret=ret&Base64EncMap(((first*16)AND48)+((second\16)AND15))
ret=ret&Base64EncMap(((second*4)AND60)+((third\64)AND3))
ret=ret&Base64EncMap(thirdAND63)
ndx=ndx+3
loop
ifby3 first=asc(mid(plain,ndx+0,1))
ret=ret&Base64EncMap((first\4)AND63)
if(len(plain)MOD3)=2then
second=asc(mid(plain,ndx+1,1))
ret=ret&Base64EncMap(((first*16)AND48)+((second\16)AND15))
ret=ret&Base64EncMap(((second*4)AND60))
else
ret=ret&Base64EncMap((first*16)AND48)
ret=ret'&"="
endif
ret=ret'&"="
endif
base64Encode=ret
ENDFUNCTION
(3)重新改写要保护的asp文件
改写原来的asp文件,在文件中增加UnEncode和base64Decode函数,全部代码如下:
以下是引用片段:
DimHu,Hu2
'拷贝“欲保护asp代码”的密文将之存放到Hu变量中
Hu=”c2V0IHJzPXNlcnZlci5jcmVhdGVvYmplY3Qo12Fkb2RiLnJlY29yZHNldOMpICAgICDuc3FsPeNzZWxlY3QgKiBmcm9tIGdxICB3aGVyZSB4cz0xIG9yZGVyIGJ5IGRhdGUgYXNj1yAgICAgsnJzLm9wZW4gc3FsLGNvbm4sMSwxICAgICDuaWYgcnMuZW9mIGFuZCBycy5ib2YgdGhlbiDucmVzcG9uc2Uud3JpdGUTvSD7INAg5iAgILUgvyAFILITsmVsc2UgsiAgICAgUmVzcG9uc2UuV3JpdGUg1zxBIEhSRUY9bmV3MC5hc3A/bGJpZD0TJnJlcXVlc3Qo12xiaWQTKSAmIOM+PC9BPuPuZW5kIGlmICAgIL5zZXQgcnM9bm90aGluZyAgICAgICAgsmNvbm4uY2xvc2UgICAgICDuc2V0IGNvbm49bm90aGluZyAgIL4”
Hu2=base64Decode(hu)'还原要保护的ASP代码
execute(UnEncode(Hu2))'还原单引号、回车换行,并执行原代码
’解密函数base64Decode
FUNCTIONbase64Decode(scrambled)
iflen(scrambled)=0then
base64Decode=""
exitfunction
endif
dimrealLen
realL