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微軟ASP加密軟件 sce10ch
Script 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年,雅典和斯巴達之間的伯羅奔尼撒戰爭已進入尾聲。斯巴達軍隊逐漸占據了優勢地位,準備對雅典發動最后一擊。這時,原來站在斯巴達一邊的波斯帝國突然改變態度,停止了對斯巴達的援助,意圖是使雅典和斯巴達在持續的戰爭中兩敗俱傷,以便從中漁利。在這種情況下,斯巴達急需摸清波斯帝國的具體行動計劃,以便采取新的戰略方針。正在這時,斯巴達軍隊捕獲了一名從波斯帝國回雅典送信的雅典信使。斯巴達士兵仔細搜查這名信使,可搜查了好大一陣,除了從他身上搜出一條布滿雜亂無章的希臘字母的普通腰帶外,別無他獲。情報究竟藏在什么地方呢?斯巴達軍隊統帥萊桑德把注意力集中到了那條腰帶上,情報一定就在那些雜亂的字母之中。他反復琢磨研究這些天書似的文字,把腰帶上的字母用各種方法重新排列組合,怎么也解不出來。最后,萊桑德失去了信心,他一邊擺弄著那條腰帶,一邊思考著弄到情報的其他途徑。當他無意中把腰帶呈螺旋形纏繞在手中的劍鞘上時,奇跡出現了。原來腰帶上那些雜亂無章的字母,竟組成了一段文字。這便是雅典間諜送回的一份情報,它告訴雅典,波斯軍隊準備在斯巴達軍隊發起最后攻擊時,突然對斯巴達軍隊進行襲擊。斯巴達軍隊根據這份情報馬上改變了作戰計劃,先以迅雷不及掩耳之勢攻擊毫無防備的波斯軍隊,并一舉將它擊潰,解除了后顧之憂。隨后,斯巴達軍隊回師征伐雅典,終于取得了戰爭的最后勝利。
雅典間諜送回的腰帶情報,就是世界上最早的密碼情報,具體運用方法是,通信雙方首先約定密碼解讀規則,然后通信—方將腰帶(或羊皮等其他東西)纏繞在約定長度和粗細的木棍上書寫。收信—方接到后,如不把腰帶纏繞在同樣長度和粗細的木棍上,就只能看到一些毫無規則的字母。后來,這種密碼通信方式在希臘廣為流傳。現代的密碼電報,據說就是受了它的啟發而發明的。
總結
- 上一篇: 寻迹Arduino智能小车
- 下一篇: 单页应用(SPA)