词条 | asp加密 |
释义 | 为了保护asp源码,对asp源码进行处理使他人无法查看和修改asp源码就需要进行asp加密。 简介一直以来,ASP技术受到了越来越多朋友的喜爱,使用ASP从事WEB开发的人也越来越多。ASP一个非常明显的特征是页面在服务器端经过处理之后发送到浏览器中的内容为标准的HTML格式,这样有效的保护了页面程序的原代码不被客户端轻易获取。 加密方式Vernum密码方法它的基本原理是,需要有一个需要加密的明文和一个随机生成的解密钥匙文件。然后使用这两个文件组合起来生成密文。 下面的代码就是能够同时实现这个功能的函数 KeyGeN.asp文件 <% '****************************** ' KeyGeN.asp '****************************** Const g_KeyLocation = "C:\\key.txt" Const g_KeyLen = 512 On Error Resume Next Call WriteKeyToFile(KeyGeN(g_KeyLen),g_KeyLocation) if Err <> 0 Then Response.Write "ERROR GENERATING KEY." & "<P>" Response.Write Err.Number & "<BR>" Response.Write Err.Description & "<BR>" Else Response.Write "KEY SUCCESSFULLY GENERATED." End If Sub WriteKeyToFile(MyKeyString,strFileName) Dim keyFile,fso set fso = Server.CreateObject("scripting.FileSystemObject") set keyFile = fso.CreateTextFile(strFileName,true) keyFile.WriteLine(MyKeyString) keyFile.Close End Sub Function KeyGeN(iKeyLength) Dim k,iCount,strMyKey lowerbound = 35 upperbound = 96 Randomize ' Initialize random-number generator. for i = 1 to iKeyLength s = 255 k = Int(((upperbound - lowerbound) + 1) * Rnd + lowerbound) strMyKey = strMyKey & Chr(k) & "" next KeyGeN = strMyKey End Function %> 在IIS下运行上面的KeyGeN.asp页面。你只需要如此做一次,他将把密钥写入文件 c:\\key.txt中 (如果你愿意的话,你也可以把这个文件放到另外一个更加安全的地方). 然后你可以打开这个key.txt文件,它将包含512个ASCII码在35到96之间的字符. 并且由于是随机生成的,所以每个人的私人密钥文件key.txt将是不一样的,下面是 一个例子密钥文件: IY/;$>=3)?^-+7M32#Q]VOII.Q=OFMC`:P7_B;<R/8U)XFHC<SR_E$.DLG'=I+@5%*+OP:F_=';' NSY`-^S.`AA=#T5LGK(=/<:+C2K/^7AI$;PU'OME2+T8ND?W$C(J\\,;631'M-LD5F%%1 TF_&K2A-D-54[2P,#'*JU%6`0RF3CMF0(#T07U'FZ=>#,+.AW_/+']DIB;2DTIA57TT&-)O'/*F' M>H.XH5W^0Y*=71+5*^`^PKJ(=E/X#7A:?,S>R&T;+B#<:-*\\@)X9F`_`%QA3Z95.?_T#1,$2#FW W5PBH^*<])A(S0@AVD8C^Q0R^T1D?(1+,YE71X+.*+U$:3XO^Q].KG&0N0];[LJ<OZ6IN?7N4<GT L?(M'4S8+3JMK5]HC%^1^+K;\\$WBXPA?F&5^E\\D$7%*O/U[1/?8(5:1OVWV*1Z-%`:K&V?X1,1KU RD@3W0^D)<OG40?(VJ4EWL5A5M<$A);CQ36R9I]*U#Q%1<Y\\&SA%#1<V 下面再仔细分析一下上面的程序,我们发现其中的lowerbound和upperbound的数值 其实就是你想使用来加密的ASCII字符范围。 后面一篇文章中将介绍如何使用这个密钥来加密和解密一个字符串 Julain Sitkewich 在第一部分,讨论了如何生成密钥,下面将介绍如何使用这个密钥来加密和解密一个 字符串。 下面的代码就是能够同时实现这个功能的函数 Crypt.asp文件 <% Dim g_Key Const g_CryptThis = "Now is the time for all good men to come to the aid of their country." Const g_KeyLocation = "c:\\key.txt" g_Key = mid(ReadKey网络File(g_KeyLocation),1,Len(g_CryptThis)) Response.Write "<p>ORIGINAL STRING: " & g_CryptThis & "<p>" Response.Write "<p>KEY VALUE: " & g_Key & "<p>" Response.Write "<p>ENCRYPTED CYPHERTEXT: " & EnCrypt(g_CryptThis) & "<p>" Response.Write "<p>DECRYPTED CYPHERTEXT: " & DeCrypt(EnCrypt(g_CryptThis)) & "<p>" Function EnCrypt(strCryptThis) Dim strChar,iKeyChar,iStringChar,i for i = 1 to Len(strCryptThis) iKeyChar = Asc(mid(g_Key,i,1)) iStringChar = Asc(mid(strCryptThis,i,1)) ' *** uncomment below to encrypt with addition, ' iCryptChar = iStringChar + iKeyChar iCryptChar = iKeyChar Xor iStringChar strEncrypted = strEncrypted & Chr(iCryptChar) next EnCrypt = strEncrypted End Function Function DeCrypt(strEncrypted) Dim strChar,iKeyChar,iStringChar,i for i = 1 to Len(strEncrypted) iKeyChar = (Asc(mid(g_Key,i,1))) iStringChar = Asc(mid(strEncrypted,i,1)) ' *** uncomment below to decrypt with subtraction ' iDeCryptChar = iStringChar - iKeyChar iDeCryptChar = iKeyChar Xor iStringChar strDecrypted = strDecrypted & Chr(iDeCryptChar) next DeCrypt = strDecrypted End Function Function ReadKeyFromFile(strFileName) Dim keyFile,fso,f set fso = Server.CreateObject("Scripting.FileSystemObject") set f = fso.GetFile(strFileName) set ts = f.OpenAsTextStream(1,-2) Do While not ts.AtEndOfStream keyFile = keyFile & ts.ReadLine Loop ReadKeyFromFile = keyFile End Function %> 在Crypt.asp中我们首先从密钥文件中得到密钥值,然后从这段密钥中截取和我们需要加密的明文同样长度的密钥。然后使用一个简单的异或操作将明文和密钥进行运算,那么得到的结果就是加密后的密文了。过程很简单的。由于是使用了异或操作,所以解密将非常简单,只要使用同样的密钥对密文再次进行异或操作就能够解密了。在上面介绍的基础上,你可以少加改动,就可以使用同样的方法加密一个文件。唯一需要注意的是,对于一个二进制文件,你需要做一些完整性检查以保证转换回来 的字符不要越界。现在你需要做的就是把密钥保存在服务器上的一个安全的地方(不能够被外部访问) 附注: Vernam密码是由Gilbert Vernam (他是AT&T的工程师)在1918年发明的。这是一种使用异或方法进行加密解密的方法。 ASP代码加密工具主要功能 彻底加密源代码,可达到彻底保护知识产权的目的,加密效果优于非编译型的脚本加密工具。非编译型的加密工具要在运行时在内存中还原脚本执行,编译型代码不可还原,直接二进制的执行方式。 产品特点 1.支持各种ASP服务器脚本默认语言。 2.能够完全正确识别后缀名为ASP的伪ASP文件。 3.不论多么复杂的语法结构,都能正确加密并解析。 4.完美处理多种特殊ASP语法在DLL中异常情况... 系统要求 WindowsNT4.0 + IIS WindowsXP + IIS Windows 7 + IIS Windows2000 + IIS Windows2003 + IIS Windows2008 + IIS 加密软件 sce10chScript Encoder的特点是: 它只加密页面中嵌入的脚本代码,其他部分,如HTML的TAG仍然保持原样不变。处理后的文件中被加密过的部分为只读内容,对加密部分的任何修改都将导致整个加密后的文件不能使用。Script Encoder加密过的ASP文件还将使Script Debugger之类的脚本调试工具失效。 Script Encoder是可以对Client Side Script加密,也可以对Server Side Script加密。 二、使用简介 Script Encoder是个命令行工具,执行文件为SCRENC.EXE。它的操作非常简单: SCRENC [/s] [/f] [/xl] [/l defLanguage ] [/e defExtension] inputfile outputfile /s 可选。让Script Encoder“安静”的工作,即执行过程 没有屏幕输出。(我使用的感觉忽略它,同样没有屏幕 输出。没什么用,懒得理了。) /f 可选。指定输出文件是否覆盖同名输入文件。忽略,将 不执行覆盖。 /xl 可选。是否在.asp文件的顶部添加@Language指令。忽略, 将添加。 /l defLanguage 可选。指定Script Encoder加密中选择的缺省脚本语言。 文件中不包含这种脚本语言特性的脚本将被Script Encoder 忽略。对于HTML和脚本文件来说,JScript为内置缺省脚 本语言。对于ASP文件,VBScript为缺省脚本语言。同时 对于扩展名为.vbs或.js的文件Script Encoder有自适应 能力。 /e defExtension 可选。指定待加密文件的文件扩展名。缺省状态下,Script Encoder能识别asa,asp,cdx,htm,html,js,sct和vbs文件。 三、常见问题和注意事项 1.在JOY ASP中几次看到有网友使用Script Encoder时出现如下错误: "Script Encoder object <"Scripting.Encoder"> not found " 其原因:是使用Script Encoder需要Script Engine 5.0或以上脚本引擎的支持。 解决的办法有两个,升级浏览器到IE5或安装Script Engine 5.0。 2.在加密Global.asa时,加密完成后访问出现: Active Server Pages 错误 'ASP 0137' 无效通用脚本 global.asa,行1 Script 块必须是允许的 Global.asa 过程之一。< %...% > 中的 Script 原语不 允许在 global.asa 文件中。允许的过程只能是 Application_OnStart, Application_OnEnd,Session_OnStart,或 Session_OnEnd。 加密后的global.asa文件为: <%@ LANGUAGE = VBScript.Encode %><SCRIPT LANGUAGE=VBScript.Encode RUNAT=Server>#@~^nAIAAA==@#@&?i~Pzww^k1CYbWU{}xjOmDY@#@&@#@&BP</SCRIPT> <SCRIPT LANGUAGE=VBScript.Encode RUNAT=Server>#@~^OgEAAA==@#@&?i~Pzww^k 1CYbWU{}x3U9@#@&@#@&P,P?O~sbVr8Ln^DPxPUnD7+. ;D+COr==^#~@</SCRIPT> <SCRIPT LANGUAGE=VBScript.Encode RUNAT=Server>#@~^DQMAAA==@#@&?i~PU+/kk <A href="mailto:KU{}xjYmDO@#@&@#@&E~NnJ*Px~rCl1V+MJ@#@&3Hf,?`A@#@&ftEAAA==^#~@KU{}xjYmDO@#@&@#@&E~NnJ*Px~rCl1V+MJ@#@&3Hf,?`A@#@&ftEAAA==^#~@</SCRIPT> <SCRIPT LANGUAGE=VBScript.Encode RUNAT=Server>#@~^WwIAAA==@#@&?i~PU+/kk <A href="mailto:KU{}x3x9@#@&(6P?d/bWxvEj{!/DmmG[JbP@!@*PrCC^0+DE~:tnx@#@&KU{}x3x9@#@&(6P?d/bWxvEj{!/DmmG[JbP@!@*PrCC^0+DE~:tnx@#@&</SCRIPT> 出现这个错误的原因是:在加密完的global.asa文件顶部被写入了 <%@ LANGUAGE = VBScript.Encode %> 解决的办法是手动删去这一行或者使用/xl参数加密即可。 3.Script Encoder对Remote Scripting无效。 其它ASP加密解密软件(Asp EnCoder):国人自己编写的软件,持MicroSoft Script Encoder加密解密,移位、逆位加密解密算法,可保护我们辛辛苦苦编写的ASP代码,也可以躲避杀毒软件的查杀。 ASP加密锁(AspApp):将IIS + ASP(Active Server Page)实现的网站进行打包、加密、压缩,打包后的应用仍然可以在IIS下使用,但是他人已经无法直接阅读ASP脚本内容,彻底保护您的辛苦劳动成果和知识产权,您可以用来制作WEB系统的试用版本、功能限制版本和发行版本等。 AspToDll风火轮:能够将ASP代码封装成DLL,利用DLL无法还原的特性确保ASP代码加密之后不可解,保护ASP开发者的知识产权不受侵害。 AspToAspX风火轮:不但能够将ASP代码封装成DLL,而且封装后的DLL还能够运行在虚拟主机上。 概述加密是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。 加密之所以安全,绝非因不知道加密解密算法方法,而是加密的密钥是绝对的隐藏,现在流行的RSA和AES加密算法都是完全公开的,一方取得已加密的数据,就算知到加密算法也好,若没有加密的密钥,也不能打开被加密保护的信息。单单隐蔽加密算法以保护信息,在学界和业界已有相当讨论,一般认为是不够安全的。公开的加密算法是给骇客和加密家长年累月攻击测试,对比隐蔽的加密算法要安全多。 在密码学中,加密是将明文信息隐匿起来,使之在缺少特殊信息时不可读。虽然加密作为通信保密的手段已经存在了几个世纪,但是只有那些对安全要求特别高的组织和个人才会使用它。在20世纪70年代中期,强加密(Strong Encryption)的使用开始从政府保密机构延伸至公共领域,并且目前已经成为保护许多广泛使用系统的方法,比如因特网电子商务、手机网络和银行自动取款机等. 加密可以用于保证安全性,但是其它一些技术在保障通信安全方面仍然是必须的,尤其是关于数据完整性和信息验证;例如,信息验证码(MAC)或者数字签名。另一方面的考虑是为了应付流量分析。 加密或软件编码隐匿(Code Obfuscation)同时也在软件版权保护中用于对付反向工程,未授权的程序分析,破解和软件盗版及数位内容的数位版权管理(DRM)等。 在古代,加密是由许多办法完成的。在中国较“流行”使用淀粉水在纸上写字,再浸泡在碘水中使字浮现出来。而外国就不同了,最经典的莫过于伯罗奔尼撒战争。公元前405年,雅典和斯巴达之间的伯罗奔尼撒战争已进入尾声。斯巴达军队逐渐占据了优势地位,准备对雅典发动最后一击。这时,原来站在斯巴达一边的波斯帝国突然改变态度,停止了对斯巴达的援助,意图是使雅典和斯巴达在持续的战争中两败俱伤,以便从中渔利。在这种情况下,斯巴达急需摸清波斯帝国的具体行动计划,以便采取新的战略方针。正在这时,斯巴达军队捕获了一名从波斯帝国回雅典送信的雅典信使。斯巴达士兵仔细搜查这名信使,可搜查了好大一阵,除了从他身上搜出一条布满杂乱无章的希腊字母的普通腰带外,别无他获。情报究竟藏在什么地方呢?斯巴达军队统帅莱桑德把注意力集中到了那条腰带上,情报一定就在那些杂乱的字母之中。他反复琢磨研究这些天书似的文字,把腰带上的字母用各种方法重新排列组合,怎么也解不出来。最后,莱桑德失去了信心,他一边摆弄着那条腰带,一边思考着弄到情报的其他途径。当他无意中把腰带呈螺旋形缠绕在手中的剑鞘上时,奇迹出现了。原来腰带上那些杂乱无章的字母,竟组成了一段文字。这便是雅典间谍送回的一份情报,它告诉雅典,波斯军队准备在斯巴达军队发起最后攻击时,突然对斯巴达军队进行袭击。斯巴达军队根据这份情报马上改变了作战计划,先以迅雷不及掩耳之势攻击毫无防备的波斯军队,并一举将它击溃,解除了后顾之忧。随后,斯巴达军队回师征伐雅典,终于取得了战争的最后胜利。 雅典间谍送回的腰带情报,就是世界上最早的密码情报,具体运用方法是,通信双方首先约定密码解读规则,然后通信—方将腰带(或羊皮等其他东西)缠绕在约定长度和粗细的木棍上书写。收信—方接到后,如不把腰带缠绕在同样长度和粗细的木棍上,就只能看到一些毫无规则的字母。后来,这种密码通信方式在希腊广为流传。现代的密码电报,据说就是受了它的启发而发明的。 分类加密建立在对信息进行数学编码和解码的基础上。加密类型分为两种,对称加密与非对称加密,对称加密双方采用共同密钥,(当然这个密钥是需要对外保密的),这里讲一下非对称加密,这种加密方式存在两个密钥,密钥 -- 一种是公共密钥(正如其名,这是一个可以公开的密钥值),一种是私人密钥(对外保密)。您发送信息给我们时,使用公共密钥加密信息。一旦我们收到您的加密信息,我们则使用私人密钥破译信息密码(被我们的公钥加密的信息,只有我们的唯一的私钥可以解密,这样,就在技术上保证了这封信只有我们才能解读——因为别人没有我们的私钥)。使用私人密钥加密的信息只能使用公共密钥解密(这一功能应用与数字签名领域,我的私钥加密的数据,只有我的公钥可以解读,具体内容参考数字签名的信息)反之亦然,以确保您的信息安全。 什么是加密技术加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。 加密技术包括两个元素:算法和密钥。算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解密的一种算法。在安全保密中,可通过适当的钥加密技术和管理机制来保证网络的信息通信安全。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。