ASP加密方法有哪些?常用ASP加密技术分享给你

吉云

今天跟大家唠唠我最近折腾的 ASP 加密,这玩意儿现在用的人不多,但有些老项目,你还得硬着头皮上。

事情是这样的,前几天接个活儿,甲方那边的网站是用 ASP 写的,代码都明文放在那儿,也没做啥保护。甲方就提个要求,说得把代码加密一下,省得被人直接扒走。

一听这要求,我就开始琢磨,ASP 加密这玩意儿,说难不难,说简单也不简单。网上搜一圈,大概有这么几种方案:

ASP加密方法有哪些?常用ASP加密技术分享给你

用微软的 Script Encoder(*)

搞组件加密

自己写程序加密

Script Encoder 这玩意儿,我第一个就pass,加密效果一般,而且还得用老版本的 IE 才能正常浏览,太不靠谱。

组件加密,听起来挺高大上的,但是要写 DLL,还得注册啥的,想想就麻烦,时间也不允许。

我决定还是自己写程序加密,虽然麻烦点,但是可控性强。

ASP加密方法有哪些?常用ASP加密技术分享给你

说干就干,我先是想个简单的加密算法,就是把 ASP 代码里的字符,按照一定的规则替换一下,比如 A 换成 B,B 换成 C 啥的。

asp

Function Encrypt(str)

Dim i, char, encryptedStr

encryptedStr = ""

ASP加密方法有哪些?常用ASP加密技术分享给你

For i = 1 To Len(str)

char = Mid(str, i, 1)

'// 这里可以写你的加密逻辑,比如简单的字符替换

char = Chr(Asc(char) + 1) ' 简单地把每个字符的 ASCII 码加 1

encryptedStr = encryptedStr & char

Next

ASP加密方法有哪些?常用ASP加密技术分享给你

Encrypt = encryptedStr

End Function

加密是简单,但是解密也简单,别人一看就知道你这啥玩意儿。

于是我又加点料,搞个稍微复杂点的算法,就是把 ASP 代码里的字符,先用 MD5 散列一下,然后再用 Base64 编码一下。

ASP加密方法有哪些?常用ASP加密技术分享给你

asp

Function MD5(str)

Dim objMD5, arrByte, i

Set objMD5 = CreateObject("*.MD5CryptoServiceProvider")

arrByte = *_2(StrToByte(str))

ASP加密方法有哪些?常用ASP加密技术分享给你

MD5 = ""

For i = 0 To UBound(arrByte)

MD5 = MD5 & Right("0" & Hex(arrByte(i)), 2)

Next

Set objMD5 = Nothing

End Function

ASP加密方法有哪些?常用ASP加密技术分享给你

Function StrToByte(str)

Dim arrByte(), i

ReDim arrByte(Len(str) - 1)

For i = 1 To Len(str)

arrByte(i - 1) = AscB(Mid(str, i, 1))

Next

ASP加密方法有哪些?常用ASP加密技术分享给你

StrToByte = arrByte

End Function

Function Base64Encode(str)

Dim objXML, objNode

Set objXML = CreateObject("*")

Set objNode = *("b64")

ASP加密方法有哪些?常用ASP加密技术分享给你

* = "*64"

* = StrToByte(str)

Base64Encode = *

Set objNode = Nothing

Set objXML = Nothing

End Function

ASP加密方法有哪些?常用ASP加密技术分享给你

Function Encrypt(str)

Encrypt = Base64Encode(MD5(str))

End Function

这样一来,加密后的代码就变得乱七八糟的,就算别人扒走,也看不懂是啥玩意儿。

ASP加密方法有哪些?常用ASP加密技术分享给你

解密也得有相应的代码:

asp

Function Base64Decode(str)

Dim objXML, objNode

Set objXML = CreateObject("*")

ASP加密方法有哪些?常用ASP加密技术分享给你

Set objNode = *("b64")

* = "*64"

* = str

Base64Decode = ByteToStr(*)

Set objNode = Nothing

Set objXML = Nothing

ASP加密方法有哪些?常用ASP加密技术分享给你

End Function

Function ByteToStr(arrByte)

Dim i

ByteToStr = ""

For i = 0 To UBound(arrByte)

ByteToStr = ByteToStr & Chr(arrByte(i))

ASP加密方法有哪些?常用ASP加密技术分享给你

Next

ByteToStr = ByteToStr

End Function

Function Decrypt(str)

Decrypt = Base64Decode(str)

End Function

ASP加密方法有哪些?常用ASP加密技术分享给你

加密解密的代码都有,接下来就是把 ASP 代码里的敏感部分,用加密函数加密一下,然后在页面上用解密函数解密一下。

例如,你想加密数据库连接字符串:

asp

ASP加密方法有哪些?常用ASP加密技术分享给你

' 加密前的连接字符串

'connStr = "Provider=*.4.0;Data Source=*"

' 加密后的连接字符串

encryptedConnStr = Encrypt("Provider=*.4.0;Data Source=*")

' 使用时解密

connStr = Decrypt(encryptedConnStr)

ASP加密方法有哪些?常用ASP加密技术分享给你

Set conn = *("*")

* connStr

这样,就算别人看到加密后的字符串,也不知道原来的连接字符串是什么。

我把所有的 ASP 文件都加密一遍,然后交给甲方。甲方那边测试一下,没啥问题,就验收。

ASP加密方法有哪些?常用ASP加密技术分享给你

这回 ASP 加密的实践,让我又复习一遍 ASP 的知识,也学到一些简单的加密技巧。虽然 ASP 现在用的人不多,但是掌握一些基本的加密方法,还是很有用的。

注意: 这只是个简单的加密例子,实际应用中,还需要根据具体情况,选择更复杂的加密算法,才能保证代码的安全性。 别指望靠这玩意儿就能防住所有黑客,只能说聊胜于无。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]