asp加密
? 一直以來(lái),ASP技術(shù)受到了越來(lái)越多朋友的喜愛,使用ASP從事WEB開發(fā)的人也越來(lái)越多。ASP一個(gè)非常明顯的特征是頁(yè)面在服務(wù)器端經(jīng)過(guò)處理之后發(fā)送到瀏覽器中的內(nèi)容為標(biāo)準(zhǔn)的HTML格式,這樣有效的保護(hù)了頁(yè)面程序的原代碼不被客戶端輕易獲取.
?
Vernum密碼方法
它的基本原理是,需要有一個(gè)需要加密的明文和一個(gè)隨機(jī)生成的解密鑰匙文件。然后使用這兩個(gè)文件組合起來(lái)生成密文。 下面的代碼就是能夠同時(shí)實(shí)現(xiàn)這個(gè)功能的函數(shù) 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下運(yùn)行上面的KeyGeN.asp頁(yè)面。你只需要如此做一次,他將把密鑰寫入文件 c:\key.txt中 (如果你愿意的話,你也可以把這個(gè)文件放到另外一個(gè)更加安全的地方). 然后你可以打開這個(gè)key.txt文件,它將包含512個(gè)ASCII碼在35到96之間的字符. 并且由于是隨機(jī)生成的,所以每個(gè)人的私人密鑰文件key.txt將是不一樣的,下面是 一個(gè)例子密鑰文件: 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 下面再仔細(xì)分析一下上面的程序,我們發(fā)現(xiàn)其中的lowerbound和upperbound的數(shù)值 其實(shí)就是你想使用來(lái)加密的ASCII字符范圍。 后面一篇文章中將介紹如何使用這個(gè)密鑰來(lái)加密和解密一個(gè)字符串 Julain Sitkewich 在第一部分,討論了如何生成密鑰,下面將介紹如何使用這個(gè)密鑰來(lái)加密和解密一個(gè) 字符串。 下面的代碼就是能夠同時(shí)實(shí)現(xiàn)這個(gè)功能的函數(shù) 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網(wǎng)絡(luò)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中我們首先從密鑰文件中得到密鑰值,然后從這段密鑰中截取和我們需要加密的明文同樣長(zhǎng)度的密鑰。然后使用一個(gè)簡(jiǎn)單的異或操作將明文和密鑰進(jìn)行運(yùn)算,那么得到的結(jié)果就是加密后的密文了。過(guò)程很簡(jiǎn)單的。由于是使用了異或操作,所以解密將非常簡(jiǎn)單,只要使用同樣的密鑰對(duì)密文再次進(jìn)行異或操作就能夠解密了。在上面介紹的基礎(chǔ)上,你可以少加改動(dòng),就可以使用同樣的方法加密一個(gè)文件。唯一需要注意的是,對(duì)于一個(gè)二進(jìn)制文件,你需要做一些完整性檢查以保證轉(zhuǎn)換回來(lái) 的字符不要越界。現(xiàn)在你需要做的就是把密鑰保存在服務(wù)器上的一個(gè)安全的地方(不能夠被外部訪問(wèn)) 附注: Vernam密碼是由Gilbert Vernam (他是AT&T的工程師)在1918年發(fā)明的。這是一種使用異或方法進(jìn)行加密解密的方法。ASP代碼加密工具
主要功能 徹底加密源代碼,可達(dá)到徹底保護(hù)知識(shí)產(chǎn)權(quán)的目的,加密效果優(yōu)于非編譯型的腳本加密工具。非編譯型的加密工具要在運(yùn)行時(shí)在內(nèi)存中還原腳本執(zhí)行,編譯型代碼不可還原,直接二進(jìn)制的執(zhí)行方式。 產(chǎn)品特點(diǎn) 1.支持各種ASP服務(wù)器腳本默認(rèn)語(yǔ)言。 2.能夠完全正確識(shí)別后綴名為ASP的偽ASP文件。 3.不論多么復(fù)雜的語(yǔ)法結(jié)構(gòu),都能正確加密并解析。 4.完美處理多種特殊ASP語(yǔ)法在DLL中異常情況... 系統(tǒng)要求 WindowsNT4.0 + IIS WindowsXP + IIS Windows 7 + IIS Windows2000 + IIS Windows2003 + IIS Windows2008 + IIS微軟ASP加密軟件 sce10ch
Script Encoder的特點(diǎn)是: 它只加密頁(yè)面中嵌入的腳本代碼,其他部分,如HTML的TAG仍然保持原樣不變。處理后的文件中被加密過(guò)的部分為只讀內(nèi)容,對(duì)加密部分的任何修改都將導(dǎo)致整個(gè)加密后的文件不能使用。Script Encoder加密過(guò)的ASP文件還將使Script Debugger之類的腳本調(diào)試工具失效。 Script Encoder是可以對(duì)Client Side Script加密,也可以對(duì)Server Side Script加密。 二、使用簡(jiǎn)介 Script Encoder是個(gè)命令行工具,執(zhí)行文件為SCRENC.EXE。它的操作非常簡(jiǎn)單: SCRENC [/s] [/f] [/xl] [/l defLanguage ] [/e defExtension] inputfile outputfile /s 可選。讓Script Encoder“安靜”的工作,即執(zhí)行過(guò)程 沒有屏幕輸出。(我使用的感覺忽略它,同樣沒有屏幕 輸出。沒什么用,懶得理了。) /f 可選。指定輸出文件是否覆蓋同名輸入文件。忽略,將 不執(zhí)行覆蓋。 /xl 可選。是否在.asp文件的頂部添加@Language指令。忽略, 將添加。 /l defLanguage 可選。指定Script Encoder加密中選擇的缺省腳本語(yǔ)言。 文件中不包含這種腳本語(yǔ)言特性的腳本將被Script Encoder 忽略。對(duì)于HTML和腳本文件來(lái)說(shuō),JScript為內(nèi)置缺省腳 本語(yǔ)言。對(duì)于ASP文件,VBScript為缺省腳本語(yǔ)言。同時(shí) 對(duì)于擴(kuò)展名為.vbs或.js的文件Script Encoder有自適應(yīng) 能力。 /e defExtension 可選。指定待加密文件的文件擴(kuò)展名。缺省狀態(tài)下,Script Encoder能識(shí)別asa,asp,cdx,htm,html,js,sct和vbs文件。 三、常見問(wèn)題和注意事項(xiàng) 1.在JOY ASP中幾次看到有網(wǎng)友使用Script Encoder時(shí)出現(xiàn)如下錯(cuò)誤: "Script Encoder object <"Scripting.Encoder"> not found " 其原因:是使用Script Encoder需要Script Engine 5.0或以上腳本引擎的支持。 解決的辦法有兩個(gè),升級(jí)瀏覽器到IE5或安裝Script Engine 5.0。 2.在加密Global.asa時(shí),加密完成后訪問(wèn)出現(xiàn): Active Server Pages 錯(cuò)誤 'ASP 0137' 無(wú)效通用腳本 global.asa,行1 Script 塊必須是允許的 Global.asa 過(guò)程之一。< %...% > 中的 Script 原語(yǔ)不 允許在 global.asa 文件中。允許的過(guò)程只能是 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> 出現(xiàn)這個(gè)錯(cuò)誤的原因是:在加密完的global.asa文件頂部被寫入了 <%@ LANGUAGE = VBScript.Encode %> 解決的辦法是手動(dòng)刪去這一行或者使用/xl參數(shù)加密即可。 3.Script Encoder對(duì)Remote Scripting無(wú)效。其它
ASP加密解密軟件(Asp EnCoder):國(guó)人自己編寫的軟件,持MicroSoft Script Encoder加密解密,移位、逆位加密解密算法,可保護(hù)我們辛辛苦苦編寫的ASP代碼,也可以躲避殺毒軟件的查殺。 ASP加密鎖(AspApp):將IIS + ASP(Active Server Page)實(shí)現(xiàn)的網(wǎng)站進(jìn)行打包、加密、壓縮,打包后的應(yīng)用仍然可以在IIS下使用,但是他人已經(jīng)無(wú)法直接閱讀ASP腳本內(nèi)容,徹底保護(hù)您的辛苦勞動(dòng)成果和知識(shí)產(chǎn)權(quán),您可以用來(lái)制作WEB系統(tǒng)的試用版本、功能限制版本和發(fā)行版本等。 AspToDll風(fēng)火輪:能夠?qū)SP代碼封裝成DLL,利用DLL無(wú)法還原的特性確保ASP代碼加密之后不可解,保護(hù)ASP開發(fā)者的知識(shí)產(chǎn)權(quán)不受侵害。AspToAspX風(fēng)火輪:不但能夠?qū)SP代碼封裝成DLL,而且封裝后的DLL還能夠運(yùn)行在虛擬主機(jī)上。
?
概述
?
加密是以某種特殊的算法改變?cè)械男畔?shù)據(jù),使得未授權(quán)的用戶即使獲得了已加密的信息,但因不知解密的方法,仍然無(wú)法了解信息的內(nèi)容。
加密之所以安全,絕非因不知道加密解密算法方法,而是加密的密鑰是絕對(duì)的隱藏,現(xiàn)在流行的RSA和AES加密算法都是完全公開的,一方取得已加密的數(shù)據(jù),就算知到加密算法也好,若沒有加密的密鑰,也不能打開被加密保護(hù)的信息。單單隱蔽加密算法以保護(hù)信息,在學(xué)界和業(yè)界已有相當(dāng)討論,一般認(rèn)為是不夠安全的。公開的加密算法是給駭客和加密家長(zhǎng)年累月攻擊測(cè)試,對(duì)比隱蔽的加密算法要安全多。
在密碼學(xué)中,加密是將明文信息隱匿起來(lái),使之在缺少特殊信息時(shí)不可讀。雖然加密作為通信保密的手段已經(jīng)存在了幾個(gè)世紀(jì),但是只有那些對(duì)安全要求特別高的組織和個(gè)人才會(huì)使用它。在20世紀(jì)70年代中期,強(qiáng)加密(Strong Encryption)的使用開始從政府保密機(jī)構(gòu)延伸至公共領(lǐng)域,并且目前已經(jīng)成為保護(hù)許多廣泛使用系統(tǒng)的方法,比如因特網(wǎng)電子商務(wù)、手機(jī)網(wǎng)絡(luò)和銀行自動(dòng)取款機(jī)等.
加密可以用于保證安全性,但是其它一些技術(shù)在保障通信安全方面仍然是必須的,尤其是關(guān)于數(shù)據(jù)完整性和信息驗(yàn)證;例如,信息驗(yàn)證碼(MAC)或者數(shù)字簽名。另一方面的考慮是為了應(yīng)付流量分析。
加密或軟件編碼隱匿(Code Obfuscation)同時(shí)也在軟件版權(quán)保護(hù)中用于對(duì)付反向工程,未授權(quán)的程序分析,破解和軟件盜版及數(shù)位內(nèi)容的數(shù)位版權(quán)管理(DRM)等。
在古代,加密是由許多辦法完成的。在中國(guó)較“流行”使用淀粉水在紙上寫字,再浸泡在碘水中使字浮現(xiàn)出來(lái)。而外國(guó)就不同了,最經(jīng)典的莫過(guò)于伯羅奔尼撒戰(zhàn)爭(zhēng)。公元前405年,雅典和斯巴達(dá)之間的伯羅奔尼撒戰(zhàn)爭(zhēng)已進(jìn)入尾聲。斯巴達(dá)軍隊(duì)逐漸占據(jù)了優(yōu)勢(shì)地位,準(zhǔn)備對(duì)雅典發(fā)動(dòng)最后一擊。這時(shí),原來(lái)站在斯巴達(dá)一邊的波斯帝國(guó)突然改變態(tài)度,停止了對(duì)斯巴達(dá)的援助,意圖是使雅典和斯巴達(dá)在持續(xù)的戰(zhàn)爭(zhēng)中兩敗俱傷,以便從中漁利。在這種情況下,斯巴達(dá)急需摸清波斯帝國(guó)的具體行動(dòng)計(jì)劃,以便采取新的戰(zhàn)略方針。正在這時(shí),斯巴達(dá)軍隊(duì)捕獲了一名從波斯帝國(guó)回雅典送信的雅典信使。斯巴達(dá)士兵仔細(xì)搜查這名信使,可搜查了好大一陣,除了從他身上搜出一條布滿雜亂無(wú)章的希臘字母的普通腰帶外,別無(wú)他獲。情報(bào)究竟藏在什么地方呢?斯巴達(dá)軍隊(duì)統(tǒng)帥萊桑德把注意力集中到了那條腰帶上,情報(bào)一定就在那些雜亂的字母之中。他反復(fù)琢磨研究這些天書似的文字,把腰帶上的字母用各種方法重新排列組合,怎么也解不出來(lái)。最后,萊桑德失去了信心,他一邊擺弄著那條腰帶,一邊思考著弄到情報(bào)的其他途徑。當(dāng)他無(wú)意中把腰帶呈螺旋形纏繞在手中的劍鞘上時(shí),奇跡出現(xiàn)了。原來(lái)腰帶上那些雜亂無(wú)章的字母,竟組成了一段文字。這便是雅典間諜送回的一份情報(bào),它告訴雅典,波斯軍隊(duì)準(zhǔn)備在斯巴達(dá)軍隊(duì)發(fā)起最后攻擊時(shí),突然對(duì)斯巴達(dá)軍隊(duì)進(jìn)行襲擊。斯巴達(dá)軍隊(duì)根據(jù)這份情報(bào)馬上改變了作戰(zhàn)計(jì)劃,先以迅雷不及掩耳之勢(shì)攻擊毫無(wú)防備的波斯軍隊(duì),并一舉將它擊潰,解除了后顧之憂。隨后,斯巴達(dá)軍隊(duì)回師征伐雅典,終于取得了戰(zhàn)爭(zhēng)的最后勝利。
雅典間諜送回的腰帶情報(bào),就是世界上最早的密碼情報(bào),具體運(yùn)用方法是,通信雙方首先約定密碼解讀規(guī)則,然后通信—方將腰帶(或羊皮等其他東西)纏繞在約定長(zhǎng)度和粗細(xì)的木棍上書寫。收信—方接到后,如不把腰帶纏繞在同樣長(zhǎng)度和粗細(xì)的木棍上,就只能看到一些毫無(wú)規(guī)則的字母。后來(lái),這種密碼通信方式在希臘廣為流傳。現(xiàn)代的密碼電報(bào),據(jù)說(shuō)就是受了它的啟發(fā)而發(fā)明的。
總結(jié)
- 上一篇: 寻迹Arduino智能小车
- 下一篇: 单页应用(SPA)