




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、匯編語言課程設(shè)計報告匯編語言課程設(shè)計報告題 目: 文件加密程序院 系 :計算機科學與技術(shù) 專 業(yè) : 班 級 : 學 號 : 姓 名 : 指導教師 : 2011年 9 月 10 日目 錄一、需求分析- 3 -1.題目要求- 3 -2.需求分析- 3 -二、系統(tǒng)設(shè)計- 3 -1.概要設(shè)計- 3 -整體說明- 3 -主要設(shè)計思想:- 4 -主要采用的算法:- 5 -主程序的流程圖為:- 6 -數(shù)據(jù)段設(shè)計:- 7 -堆棧段設(shè)計- 8 -宏定義- 8 -三、詳細設(shè)計- 8 -ENCODE子程序- 8 -DECODE子程序流程圖為:- 9 -畫圖函數(shù)簡介:- 10 -計時功能實現(xiàn)- 10 -四、軟件開發(fā)
2、- 11 -五、軟件測試- 11 -1、Dos下的運行環(huán)境為- 11 -3、加密文件一:D:masm60mybook.doc- 12 -4、加密文件二:D:masm60blank.txt.- 20 -5、加密文件三:D:masm60作業(yè).doc- 21 -6、結(jié)果分析:- 23 -五、特點與不足- 23 -1、技術(shù)特點- 23 -、文件的安全性特點- 23 -、用戶界面特點- 24 -2、不足和改進的建議- 24 -六、過程和體會- 25 -1、遇到的主要問題和解決方法- 25 -2、課程設(shè)計的體會- 25 -七、源碼和說明- 26 -1、文件清單及其功能說明- 26 -2、用戶使用說明書-
3、26 -3、源代碼- 26 -一、需求分析1.題目要求編寫一個文件加密程序enc,對于任意的文件進行加密和解密,加密算法可以自選。程序功能:程序帶有3個命令行參數(shù),依次為運行模式、密鑰、文件名。Enc e 密鑰 文件名 對于文件進行加密Enc d 密鑰 文件名對于文件進行解密要求加密后的文件進行解密能夠完全恢復成原文件。2.需求分析1、 題目要求“任意文件”,可以有以下理解。a對文件名沒有要求,文件名可以是中文,也可以是英文的。要求程序運行平臺為中文dos系統(tǒng),即用戶在dos選項中應選擇“當前代碼頁為936(ANSI/OEM-簡體中文GBK)”。但由于dos自身的格式限制,文件名只能在8個英文
4、字母以內(nèi)(中文一個字算作兩個字母)。b對文件類型沒有要求,文件類型可以是.txt、.doc、.png、.flv、.avi.、jpg、.mvb等都應該可以進行加密解密。但由于dos自身的格式限制,文件的后綴名只能為3個英文字母,故不能加密.rmvb等后綴為4個字母的文件。c對文件的存放地點沒有要求,可以在任意磁盤的任意文件夾內(nèi)。這也要求實際上運行程序時在輸入文件名的同時還要有文件的位置信息輸入。2、 加密和解密有權(quán)限限制。對于文件加密,若該文件已被加密,則若要再次加密需輸入原來的密碼,識別通過后才可加密,否則加密操作失敗。解密時密鑰要與加密時保持一致。要求密鑰不一致時解密失敗,文件內(nèi)容仍然處于加
5、密狀態(tài),密鑰一致時解密成功,文件內(nèi)容完全恢復。這要求程序在加密時要保存有密鑰的信息,解密時有密鑰識別程序。通過加密和解密的選擇性一定程度上防止攻擊者通過加密或解密操作修改文件信息和查看文件信息。3、 要通過命令行參數(shù)獲取加密/解密、密碼、文件名(包括文件位置)等信息。4、 為保證文件安全,處理后的文件屬性為只讀文件。二、系統(tǒng)設(shè)計1.概要設(shè)計整體說明系統(tǒng)分為主程序、ENCODE加密子程序和DECODE解密子程序三個模塊。調(diào)用形式均為段內(nèi)直接調(diào)用。模塊間的接口為數(shù)據(jù)段的存儲單元,運行環(huán)境在dos下進行。另外系統(tǒng)提供計算操作所用時間和較好的用戶界面。用戶屏幕為:通過按任意鍵,進行人機交互,逐條輸出信
6、息。完整圖為:有以下5種提示:Command:輸出用戶輸入的命令,便于用戶核對。Error:操作失?。ū热缑艽a錯誤、文件為空、文件未加密(解密時)Worning:操作有待檢驗(文件已加密(加密時)Congratulation:操作成功(加密、解密成功) 圖1Time:操作用時(系統(tǒng)計算)主要設(shè)計思想:采用異或和循環(huán)移位算法加密文件。為達到有選擇地加密和解密文件的目的,本算法要求保存密碼。因此,加密一次,文件要保存一次密碼,文件長度加長字節(jié);解密一次,文件釋放一次已保存的密碼,文件長度減少字節(jié)。本系統(tǒng)采用新建一個與待處理(待加密或待解密)的文件(命名為文件)在同一路徑的文件(命名為文件)來存放處
7、理后的數(shù)據(jù),再將文件刪除,將文件以文件重命名并修改屬性為只讀,來達到設(shè)計要求。(見右圖1)主要采用的算法: 異或算法:原理為:=,故為對稱加密算法。 具體實現(xiàn):因設(shè)計要求保存密碼,故設(shè)計兩個字節(jié)型密鑰、來加密解密數(shù)據(jù)。其中由文件名、路徑的數(shù)據(jù)相加得到的,因此只與文件本身屬性有關(guān),用來加密密碼;由用戶輸入的密碼相加得到,只與用戶有關(guān),用來加密除密碼外的數(shù)據(jù)。特別說明:在多次加密中,為程序簡單實用,故以前保存的密碼數(shù)據(jù)在最近一次加密程序中是作為正文被加密的。(見圖2)c注意:一個漢字為兩個字節(jié),一個英文字母為一個字節(jié),在文件加密/解密過程中需要注意修正一點:當讀取文件的字節(jié)數(shù)為奇數(shù)時,需在其后補一
8、個空格,再將讀取的字節(jié)數(shù)增1,否則,恢復文件時會有部分數(shù)據(jù)錯誤。 循環(huán)移位算法:使用該算法的目的:密碼為四位字節(jié)型數(shù)據(jù),故理論上來說只需要的次方即可獲得一次密碼,而用戶加密次則需的次來獲得所有密碼,安全性隨著用戶加密次數(shù)的增加急劇升高。但是若不是從獲得密碼的角度,而是直接從攻破異或算法的角度來看,安全性極低。因為異或加密算法的密鑰為字節(jié)型數(shù)據(jù),若攻擊者在不獲得密碼的情況下用的數(shù)據(jù)來替代異或明文,則只需次即可獲得明文的所有信息(文件頭部為密碼的信息無需關(guān)心)。因此,采用循環(huán)移位的算法來提高安全性。該算法的實現(xiàn):考慮到在多次加密過程中,加密前必須輸入前一次的密碼的實現(xiàn),為方便核對前一次密碼,故在加
9、密過程中新密碼與異或后的數(shù)據(jù)不參與移位直接寫入文件的頭部。由于一次緩沖區(qū)取數(shù)據(jù)為位,故在加密程序中文件中數(shù)據(jù)都與異或后以模循環(huán)右移一位,即原來第一位數(shù)據(jù)被移到第二位,原來第位數(shù)據(jù)被移到第一位,移位結(jié)束后再將數(shù)據(jù)寫入文件中。而解密程序則對應過來,先識別密碼,再循環(huán)左移一位。對于文件末尾沒有達到個數(shù)據(jù)的情況,則按讀取文件的實際字節(jié)數(shù)為模來循環(huán)移位。圖二主程序的流程圖為: 數(shù)據(jù)段設(shè)計:分為數(shù)據(jù)存儲區(qū)和提示信息存儲區(qū)兩個不同功能的數(shù)據(jù)段模塊 數(shù)據(jù)存儲區(qū)提示信息數(shù)據(jù)區(qū)堆棧段設(shè)計宏定義輸入輸出宏定義讀鍵盤 讀取時鐘時間存放在數(shù)據(jù)區(qū)輸入輸出有邊框的字符串 注:分別用到了讀光標位置、置光標位置、輸出制表符字符
10、串。三、詳細設(shè)計ENCODE子程序 功能:加密文件:將密碼以××××與異或后存放在新文件頭部中,將原文件中的數(shù)據(jù)與異或并以模進行循環(huán)右移后存放在新文件。 入口參數(shù):原文件的代號新文件的代號密鑰、 出口參數(shù):無 流程圖為:DECODE子程序流程圖為: 功能:解密文件:將原文件中的密碼(以××××與異或后的結(jié)果)與用戶輸入密碼進行核對,若正確則將原文件中除存放密碼的數(shù)據(jù)外其他數(shù)據(jù)與異或并以模進行循環(huán)左移后存放在新文件。 入口參數(shù):原文件的代號新文件的代號密鑰、 出口參數(shù):無 流程圖為:畫圖函數(shù)簡介:(0xda) 、(0
11、xbf)、(0xc4)、(0xc3)、(0xb4)、(0xc0h)、(0xd9)、 (0xb3)合適的長度即可構(gòu)成邊框。計時功能實現(xiàn)采用int 1AH中斷,獲取實時時間(BCD碼的時,分,秒),將其轉(zhuǎn)化為二進制數(shù)后存儲在數(shù)據(jù)區(qū);在系統(tǒng)即將結(jié)束時再次獲取時間,兩者時間只差即為系統(tǒng)耗時,轉(zhuǎn)化為ASCII碼輸出。四、軟件開發(fā)代碼編輯器:Notepad+(如右圖)匯編工具:masm.exe(見下圖)連接工具:link.exe(見下圖)調(diào)試工具:td.exe(見下圖)五、軟件測試1、Dos下的運行環(huán)境為 2、相關(guān)文件介紹: 軟件所在地點:F:masmEnc.exe. 待加密文件一:D:masm60myb
12、ook.doc; 待加密文件二:D:masm60blank.txt. (文件為空) 待加密文件三:D:masm60作業(yè).doc (與文件一為相同文件,名稱為中文名) 其在計算機中的位置如下圖:說明: 主要以加密文件一為核心,展現(xiàn)軟件的加密、解密、多次加密功能和檢查命令行格式錯誤、密碼錯誤、找不到文件等提示功能,加密文件二為展現(xiàn)提示處理文件為空的功能;加密文件三為展現(xiàn)中文在系統(tǒng)中的應用。 3、加密文件一:D:masm60mybook.doc原文件為:加密程序:先介紹幾個界面:A.用戶開始輸入界面:B.進入系統(tǒng)后的界面:第一條信息為輸出用戶輸入的命令:Enc e ab12 d:masm60mybo
13、ok.docC.按任意鍵逐條閱讀輸出信息至信息輸出完成:第二條信息是加密操作成功,并提醒用戶記住密碼;第三條信息是輸出所用時間為04s;第四條信息是告訴用戶以任意鍵退出系統(tǒng);(如下圖)D.退出系統(tǒng)的界面:現(xiàn)在文件為:按確定鍵文件看到文件內(nèi)容:(文件名稱標注(只讀),說明文件屬性為只讀)a.輸入解密命令:(enc d 1234 d:masm60mybook.doc,顯然輸入的密碼與加密的密碼不符?!绢A測:解密操作應失敗】)b.按任意鍵查看所有信息,現(xiàn)用戶界面的信息為:第一條:顯示已輸入的命令第二條:密碼錯誤,操作失敗,請再試!第三條:該操作耗時02s!第四條:請用戶按任意鍵退出系統(tǒng)(如下圖)a.
14、輸入加密命令(enc e 1234 d:masm60mybook.doc【預測:上個步驟解密失敗,此時文件處于加密狀態(tài),再加密應有權(quán)限限制】)b.按任意鍵查看所有信息,現(xiàn)用戶界面的信息為:第一條:顯示已輸入的命令第二條:警告:文件已被加密,請先輸入加密時密碼:(輸入wert(顯然不是正確的ab12)第三條:密碼錯誤,操作失敗,請重試!第四條:該操作耗時12s!第五條:請用戶按任意鍵退出系統(tǒng)(如下圖)a.輸入加密命令(enc e 1234 d:masm60mybook.doc【預測:上個步驟加密失敗,此時文件處于原有加密狀態(tài),再加密應有權(quán)限限制】)b.按任意鍵查看所有信息,現(xiàn)用戶界面的信息為:第
15、一條:顯示已輸入的命令第二條:警告:文件已被加密,請先輸入加密時密碼:(輸入ab12(為正確密碼)第三條:恭喜:密碼正確!第四條:文件將被再次加密!第五條:文件加密操作成功,請記住所有密碼!第六條:該操作耗時15s!第七條:請用戶按任意鍵退出系統(tǒng)(如下圖)現(xiàn)查看文件為:(內(nèi)容與先前加密狀態(tài)又不相同,屬性仍為只讀)解密操作,(輸入命令截圖略)輸入密碼1234得到的信息為:第一條:顯示用戶輸入的命令;第二條:恭喜,密碼正確!第三條:恭喜:解密成功!第四條:系統(tǒng)用時02s;第五條:按任意鍵退出系統(tǒng)(見下圖)此時文件為:(與文件第一次加密的內(nèi)容一樣)第二次解密輸入密碼ab12得到的信息為:第一條:顯示
16、用戶輸入的命令;第二條:恭喜,密碼正確!第三條:恭喜:解密成功!第四條:系統(tǒng)用時02s;第五條:按任意鍵退出系統(tǒng)(見下圖)查看文件:(與未加密狀態(tài)一樣,只是屬性改為了只讀,處于保護狀態(tài))輸入解密命令,密碼是1234(截圖略).(此時文件已經(jīng)過2次加密,2次解密完全恢復)【預測:再執(zhí)行解密操作應不被允許】按任意鍵查看所有輸出信息為:第一條:顯示輸入的命令第二條:錯誤:文件未被加密,請先加密!第三條:系統(tǒng)用時03s!第四條:按任意鍵退出系統(tǒng)!文件路徑或文件名錯誤,提示用戶找不到文件:命令行格式輸入錯誤,提示用戶命令行格式錯誤:4、加密文件二:D:masm60blank.txt. (文件為空)【預測
17、:空文件無需保護,不支持加/解密】a.輸入加密命令:enc e 1234 d:masm60blank.txtb.按任意鍵查看所有信息:第一條:顯示輸入的命令第二條:錯誤:文件為空!第三條:系統(tǒng)用時03s!第四條:按任意鍵退出系統(tǒng);(如下圖)a.輸入解密命令:enc d 1234 d:masm60blank.txtb.按任意鍵查看所有信息:第一條:顯示輸入的命令第二條:錯誤:文件為空!第三條:系統(tǒng)用時02s!第四條:按任意鍵退出系統(tǒng);(如下圖)5、加密文件三:D:masm60作業(yè).doc(主要是展現(xiàn)能支持中文文件,下面只展示加密一次,解密一次恢復原文件的過程,其他的功能與文件一展示功能一樣)a.
18、輸入加密命令:enc e 我是(占四個英文字符) d:masm60作業(yè).docb.按任意鍵查看所有信息:第一條:顯示輸入的命令第二條:恭喜:加密成功!請記住密碼!第三條:系統(tǒng)用時07s!第四條:按任意鍵退出系統(tǒng);(如下圖)查看文件為:(屬性為只讀)a.輸入解密命令:enc e 我是 d:masm60作業(yè).docb.按任意鍵查看所有信息:第一條:顯示輸入的命令第二條:恭喜:密碼正確!第三條:恭喜:解密成功!第四條:系統(tǒng)用時05s!第五條:按任意鍵退出系統(tǒng);(如下圖)查看文件為:(恢復原樣,屬性為只讀文件)6、結(jié)果分析:軟件測試文件一的程序流程為:步驟、說明軟件可以實現(xiàn)加/解密功能;步驟、說明對加
19、密狀態(tài)的文件進行加/解密有權(quán)限限制(必須能輸入正確密碼);步驟、說明軟件能實現(xiàn)多次加密和解密功能。步驟、(未在圖中表示)說明軟件的提示功能,較強的指錯能力。軟件測試文件二的步驟、說明不支持空文件的加密、解密操作。軟件測試文件三的步驟、說明支持中文文件、中文密碼的操作。五、特點與不足1、技術(shù)特點、文件的安全性特點 支持選擇性加密/解密功能:若要解密某文件,必須輸入正確密碼;若要加密一個已加密文件,則需正確輸入最近一次加密的密碼;若條件不滿足則操作失敗。這個功能確保了攻擊者在沒獲取密碼的情況下修改密文或者獲取明文。 支持多重加密功能,多重加密增加了文件的安全性。 經(jīng)過加密/解密后的文件屬性一律為“
20、只讀”文件,提高文件的安全性,攻擊者不能輕易篡改文件數(shù)據(jù)。 采用異或和循環(huán)移位兩個加密算法,“雙重保險”,提高了文件抗攻擊能力。攻擊者即使知道是采用這兩個算法,也不能輕易破解密文。、用戶界面特點 雖然運行環(huán)境為dos,但程序運行后首先會初始化用戶屏幕,給用戶一個干凈的界面環(huán)境。輸出信息已表格邊框形式輸出,清晰有條理。 用戶每次操作都會有相應提示,提示系統(tǒng)完整縝密。而且每條提示輸出后,要等待用戶閱讀完后鍵入任意鍵才輸出下一條提示,防止幾條提示同時輸出,用戶沒有閱讀清楚。(提示包括:“ERROR:文件為空!”、“ERROR:找不到文件!”、“ERROR:密碼錯誤!”、“ERROR:文件未被加密!”
21、(用戶執(zhí)行解密操作時可能出現(xiàn)的情況)、“WORNING:文件已被加密!”(用戶執(zhí)行加密操作時可能出現(xiàn)情況)等操作失敗提示;“CONGRATULATIONS:加密操作成功!”“CONGRATULATIONS:解密操作成功!”等操作成功提示。) 為用戶的操作計時,方便用戶。每次操作完成后會輸出:“TIME:本次操作用時: min s!” 若用戶選擇dos模式為簡體中文,則該設(shè)計支持中文文件加密,也支持2位中文密碼(一個中文為2個字節(jié))。2、不足和改進的建議不足一:文件的安全性有待提高本設(shè)計只能做到不讓攻擊者輕易修改文件,但不能防止攻擊者的各種破壞行為或潛在威脅文件安全行為。比如復制加密文件、重命名
22、加密文件、移動加密文件、修改加密文件、刪除加密文件、隱藏加密文件等。改進:可以考慮用一些中斷修改的技術(shù)和方法在底層上來實現(xiàn)這些目的。通過詢問老師這方面問題獲知這樣做的代價比較大,容易導致電腦死機等問題,再者本人技術(shù)有限,故尚未嘗試此方法。不足二:對文件的限制dos本身對文件名和后綴名位數(shù)的限制導致了本實驗設(shè)計的限制。不足三:用戶界面有待提高。在進入程序運行界面時顯示不了中文。界面為dos下文本模式,不支持鼠標、提示為全英文輸出,不方便其他語言用戶使用。改進:若不在課設(shè)要求下,可以嘗試用win32編寫程序,或者用dos下的圖形模式。不足四:多次加密后文件長度會增加,可以在加密后用壓縮算法改進。六
23、、過程和體會1、遇到的主要問題和解決方法1、 加密后部分數(shù)據(jù)不能還原當讀取文件的字節(jié)數(shù)為奇數(shù)時,需在其后補一個空格,再將讀取的字節(jié)數(shù)增1,否則,恢復文件時會有部分數(shù)據(jù)錯誤。2、 用戶提示一次輸出過多,不方便閱讀通過中斷調(diào)用MOV AH,0INT 16H讓用戶閱讀完后鍵入任意鍵,系統(tǒng)再輸出下一條提示語句。3、 一些比較大型的文件加密時間較長,用戶等待不耐心。通過兩次中斷調(diào)用(程序開始時和結(jié)束時)MOV AH,2INT 1AH將BCD碼表示的時間轉(zhuǎn)換為2進制數(shù)后存儲在數(shù)據(jù)區(qū),時間之差即為操作所用時間,將時間差轉(zhuǎn)換為ASCII碼輸出,讓用戶清楚了解進程。4、 在輸入命令行前屏幕擁擠,視覺享受不佳a.
24、清屏的中斷調(diào)用MOV AX,3INT 10Hb.用擴展的ASCII碼來畫制表符,使信息以表格形式輸出。(詳見代碼和前面的數(shù)據(jù)段介紹)2、課程設(shè)計的體會這個加密界面的課設(shè)應該是在匯編4個課設(shè)中難度較小的一個了。開始感覺比較不好下手,通過上網(wǎng)查閱各種資料和看匯編教材,理出了一定的思路所有的文件在計算機中都是以2進制形式保存的。這樣,就讓“能加密任意文件”變成了不再需要考慮的條件,因為能加密一種格式的文件就必然可以加密任意格式的文件。整個課設(shè)從開始準備到完成只花了大概10天左右的時間,其中一個星期是準備各種資料,比如命令行參數(shù)的獲取、加/解密的算法、int 21h中斷的詳細功能等。當我把各種資料收集
25、好后,再整體勾勒程序的流程具體實現(xiàn)。一切都準備好后,才開始敲代碼。因為整體思路和具體細節(jié)都有大概思路,所以真正敲代碼、調(diào)代碼的時間大概只有3天。在完成后的程序能實現(xiàn)基本功能。在課設(shè)完成后,改進階段的耗時很長,差不多1個月左右。在多次運行程序后我發(fā)現(xiàn)了很多可以改進的地方,比如界面不夠直觀;如何讓中文和擴展的ASCII碼在同一個界面中并存;當加密文件比較大時耗時比較長,沒有計時功能;程序代碼中標號名稱比較混亂;為省代碼,沒有用子程序調(diào)用;加密算法僅僅是異或,安全性不高;如何保護文件不被刪除、修改、復制、移動等許多設(shè)想,我從網(wǎng)上、圖書館查詢資料、請教課設(shè)老師,歷時良久才確定下了哪些是我能力能辦到的功
26、能實現(xiàn),哪些是現(xiàn)有技術(shù)水平不能達到的。確定好這些目標后,繼續(xù)開始了我的編寫調(diào)試運行的工作。與完成程序要求不同的是,這些功能都是從網(wǎng)上、書上學的新知識,實踐起來還是有一定的難度的。我為這次設(shè)計感到很滿意,我更加深刻地理解了文件在計算機中存儲的形式,更加深刻地理解了中斷調(diào)用,更加學會了處理難題、處理事情的步驟和應對方法。我更加沉醉于孜孜不倦地改進課設(shè)的忘我境界。七、源碼和說明1、文件清單及其功能說明enc.asm為源代碼enc.obj為obj文件enc.exe為執(zhí)行文件2、用戶使用說明書a.安裝文件將enc.exe文件放在目標盤(按用戶意愿隨意放置,可以放在多重文件夾中)b.使用確定待加/解密文件
27、滿足如下要求:(1)文件名不超過8個英文字符(有漢字的,一個漢字按2個英文字符計算)。(2)文件后綴名不超過3個英文字符(docx、rmvb等格式文件不能被加密)。(3)文件所在的磁盤沒有設(shè)置權(quán)限,比如要經(jīng)過管理員同意才能寫/刪文件等。打開dos界面,進入enc所在的文件夾中。若要加密文件則輸入命令:Enc e * 文件所在位置及名稱若要解密文件則輸入命令:Enc d * 文件所在位置及名稱(*表示密碼)注意:(1)除密碼區(qū)分大小寫外,其他的命令都不區(qū)分大小寫。(2)各字符單元只能用一個空格分開,多或少都會出現(xiàn)“命令輸入錯誤”的提示信息。(3)注意保護文件的名稱及所在的路徑不變,否則,文件將無
28、法繼續(xù)執(zhí)行之后的操作(即已加密文件即使輸入正確密碼也無法解密)3、源代碼print1macro A,B ;輸出輸入字符串lea dx,Amov ah,Bint 21hendmprint macro A,B ;輸出輸入有邊框的字符串lea dx,Amov ah,Bint 21hmov ah,03hint 10hmov ah,02hmov dl,64int 10hmov dl,0b3hmov ah,2int 21hlea dx,WINmov ah,9int 21hendmwaiting macro ;等待用戶鍵入任意鍵mov ah,0int 16hendmget_time macro A,B mo
29、v ah,2 ;獲取實時時鐘時間,并存放在數(shù)據(jù)區(qū)A(分)、B(秒) int 1ah mov al,cl and cl,0fh mov ah,0 mov bl,16d div bl mov bl,10d mul bl add cl,al mov al,dh and dh,0fh mov ah,0 mov bl,16d div bl mov bl,10d mul bl add dh,al mov A,cl mov B,dh endmDATA SEGMENTBUF DB ? ;BUF區(qū)存儲命令行參數(shù),其中A為密碼地址,B為文件名地址A1 DB ?A DB 4 DUP(?)A2 DB ?B DB 50
30、 DUP(?)C0 DB 5 ;C0存儲重復加密時要求用戶輸入的先前密碼C1 DB ? C2 DB 5 DUP(?)HANDLE1 DW ? ;HANDLE1存儲原文件代號,HANDLE2存儲新文件代號HANDLE2 DW ?KEY1 DB 0 ;KEY1為用戶輸入的密碼異或的結(jié)果,為異或文件數(shù)據(jù)的密鑰KEY2 DB 0 ;KEY2為文件名相加結(jié)果,為異或密碼的密鑰BU DB ? ;BU為文件數(shù)據(jù)的存儲區(qū)BUG DB ?BG DB 256 DUP(?)LEN DW ? ;LEN記錄文件長度D DW ? ;存儲原文件屬性MIN1 DB ? ;記錄用戶操作使用時間SEC1 DB ?FILE DB
31、50 DUP(0) ;新建文件名,必須已0結(jié)尾WIN DB 0AH,0DH,0C3H,63 DUP(0c4H),0B4H,'$'輸出制表符(窗口邊框)WELCOME DB 10 DUP(' '),09H,'HELLO! Welcome to Encrytion/Decryption System!',09H,0ah,0dh,'$'PUT DB 0AH,0DH,0DAh,63 DUP(0C4H),0BFH,0AH,0DH,0B3H,'COMMAND:Enc $' ;顯示用戶輸入的信息,便于用戶核對ERR0 DB 0A
32、H,0DH,0B3h,'ERROR: Command is wrong! Try again like: ',0B3H,0AH,0DH,0B3H,' Enc D(or E) * filename$'命令輸入格式錯誤ERR1 DB 0AH,0DH,0B3h,'ERROR: Can not open the file!$' ;不能打開文件ERR2 DB 0AH,0DH,0B3h,'ERROR: The file is empty!$' ;文件為空ERR3 DB 0AH,0DH,0B3h,'ERROR: The Password
33、 is wrong,The operation Fail. Try again!$' ;密碼錯誤ERR4 DB 0AH,0DH,0B3h,'WORNING: The file has been Encrypted!',26 DUP(' '),0B3H,0AH,0DH,0B3H,9 DUP(' '),'Input The formal Password first:$'待加密文件已被加密ERR5 DB 0AH,0DH,0B3h,'ERROR: The file has not been Encrypted!Pleas
34、e Encryption first!$' ;待解密文件還未加密SUC0 DB 0AH,0DH,0B3h,'CONGRATULATIONS:The Password is right!$' ;密碼正確SUC1 DB 0AH,0DH,0B3h,'CONGRATULATIONS:The Encryption succeed! ',23 DUP(' '),0B3H,0AH,0DH,0B3H,16 DUP(' '),'Please remeber ALL The Password!$'加密成功SUC2 DB 0AH
35、,0DH,0B3h,'CONGRATULATIONS:The Decryption succeed!$' ;解密成功SUC3 DB 0AH,0DH,0B3h,'This file will be Eecrypted AGAIN!$' ;文件再加密成功TIME DB 0AH,0DH,0B3h,'TIME:The Operation uses '輸出時間,并作為存儲時間2的單元MIN2 DB ?,?,' min, 'SEC2 DB ?,?,' s!$'QU DB 0AH,0DH,0B3h,'Please pre
36、ss any key to Quit! ',0B3H,0AH,0DH,0C0h,63 dup(0c4h),0D9h,'$'按任意鍵退出系統(tǒng)THA DB 0AH,0DH,'Thank you for use THIS SYSTEM!$'謝謝使用本系統(tǒng)DATA ENDS數(shù)據(jù)段結(jié)束STACK SEGMENT STACK DB 200 DUP(0)STACK ENDS堆棧段結(jié)束CODE SEGMENT 'CODE' ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATABEGIN: MOV AX,DATA MOV DS,A
37、X MOV ES,AX get_time MIN1,SEC1 mov ax,3 int 10h PRINT1 WELCOME,9 PRINT1 PUT,9 MOV AH,51H INT 21H MOV ES, BX ;設(shè)置ES為PSP段首址 MOV BX, 81H XOR CX,CX XOR DX,DX MOV CL, BYTE PTR ES:80H ;cl=命令行參數(shù)長度 MOV SI,0loop0: INC BX MOV DL, ES:BX ;取一個字符 CMP DL, 0DH ;直到回車為止 JE P0 CMP SI,7 JNL T0 CMP SI,1 JNG T2 CMP SI,6 J
38、E T2 ADD KEY1,DL ;取密鑰計算KEY1 JMP T2T0: CMP DL,'a'JL T1CMP DL,'z'JG T1AND DL,11011111BT1:ADD KEY2,DL ;將文件名轉(zhuǎn)換為大寫形式,計算KEY2T2: MOV BUFSI,DL ;將命令行參數(shù)存放于BUF數(shù)據(jù)區(qū)INC SIMOV AH,2 ;將命令行參數(shù)輸出 INT 21H JMP loop0P0:mov ah,03hint 10hmov ah,02hmov dl,64int 10hmov dl,0b3hmov ah,2int 21hlea dx,WINmov ah,9i
39、nt 21hWAITINGMOV BSI-6,0 ;將文件名結(jié)尾添0已滿足文件名格式AND BUF0,11011111BCMP BUF0,'E' JNE P1JMP P2P1:CMP BUF0,'D'JNE ER0 P2:CMP BUF+1,' 'JNE ER0MOV BUF+1,''CMP BUF+6,' 'JNE ER0MOV BUF+6,''判斷格式是否輸入正確MOV SI,0MOV CX,50F1:MOV DL,BSICMP DL,'.'JE F2MOV FILESI,DLI
40、NC SILOOP F1JMP ER1F2:MOV FILESI,'1'MOV FILESI+1,'.'MOV FILESI+2,'B'MOV FILESI+3,'A'MOV FILESI+4,'K'MOV FILESI+5,0 ;即將新建的文件為與原文件在相同目錄的.bak文件LEA DX,BMOV AL,0MOV AH,43H ;取文件屬性INT 21HMOV D,CXLEA DX,BMOV AL,1MOV CX,0MOV AH,43H ;將原文件屬性改為普通屬性INT 21HLEA DX,BMOV AH,3D
41、H;打開原文件MOV AL,00HINT 21HJC ER1MOV HANDLE1,AXLEA DX,FILEMOV CX,0MOV AH,3CH;建立新文件INT 21HJC ER1MOV HANDLE2,AXCMP BUF0,'D'JE DECALL ENCODEJMP FINAL0DE:CALL DECODE ;若加密則調(diào)用加密子程序,否則調(diào)用解密子程序FINAL0:MOV BX,HANDLE1MOV AH,3EH;關(guān)閉文件INT 21HMOV BX,HANDLE2MOV AH,3EHINT 21HLEA DX,BMOV AH,41H;刪除原文件INT 21HLEA DX
42、,FILEMOV AX,DSMOV ES,AXLEA DI,BMOV AH,56H;重命名新文件INT 21HLEA DX,BMOV AL,1MOV CX,1MOV AH,43H ;將文件屬性改為只讀屬性INT 21HJMP FINALER0:PRINT ERR0,9JMP FINAL1ER1:PRINT ERR1,9JMP FINAL1ER2:PRINT ERR2,9JMP FINAL1ER3:PRINT ERR3,9JMP FINAL1ER5:PRINT ERR5,9FINAL1:LEA DX,FILEMOV AH,41H ;若操作失敗則刪除新文件INT 21HLEA DX,BMOV AL
43、,1MOV CX,DMOV AH,43H ;將原文件屬性改為普通屬性INT 21HWAITINGFINAL: get_time MIN2,SEC2 MOV CL,MIN2 MOV DH,SEC2 CMP DH,SEC1 JNL M0 ADD DH,60 DEC CLM0: SUB DH,SEC1 SUB CL,MIN1 MOV AL,CL MOV AH,0 MOV BL,10D DIV BL ADD AL,30H ADD AH,30H MOV MIN2,AL MOV MIN2+1,AH MOV AL,DH MOV AH,0 DIV BL ADD AL,30H ADD AH,30H MOV SEC2,AL MOV SEC2+1,AH PRINT TIME,9 ;輸出時間 WAITING PRINT1 QU,9WAITING mov ax,3 int 10h PRINT1 THA,9 MOV AH,4CH INT 21HENCODE PROCMOV BX,HANDLE1MOV CX,256LEA DX,BUGMOV AH,3FH;讀文件INT 21HJC ER1CMP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- racemic-Cannabichromeorcin-生命科學試劑-MCE
- BCR-ABL-IN-11-生命科學試劑-MCE
- 2025年發(fā)動機用玻璃纖維編織套管項目合作計劃書
- 2025年硬幣清分機項目發(fā)展計劃
- 購瓷磚建材合同范本
- 軟件的合同范本
- 介紹中介合同范本
- 簽證合同范本買賣
- 2025年滑爽劑合作協(xié)議書
- 2025年煙氣自動采樣器及測定儀項目合作計劃書
- 磷酸鐵鋰電池工商業(yè)儲能項目施工組織設(shè)計方案
- 場地租賃安全管理協(xié)議書
- 震旦ad188維修手冊
- 數(shù)學物理方程(很好的學習教材)PPT課件
- 五金英語詞匯盤點
- 內(nèi)容講義說明案例nxt pop trainning
- GB-T-15894-2008-化學試劑-石油醚
- 工業(yè)自動化設(shè)備項目用地申請報告(模板)
- 作息時間調(diào)整告家長書
- 2021年羽毛球比賽規(guī)則及裁判手勢
- 標準色卡(建筑類)下載
評論
0/150
提交評論