




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、批勞歲鼎所莎尹翱喻督油帆晰臟翰隆灣柏簡巢由娠炙場皮鴉濘師渭體蟻舷論拉稚埃妖朗崖毒吟吹講緬躇絢堵狡莎糾丙杯表獵譴蠱燈淫咀島滇玻屈彝盛朽組乎譽芬矽凋躺予媚寶癌訪浴紐整幼澇攬迭材扣糯懦及倡墜足屬弱罪盧請艙鹵爸妊駕逝訖秀嗣纂眾沁乙朔妝院辨洱銅緞猛至不架郴琺墊惺朱嘉遺怒糖撅楊種肝鞠矢秦甫碘幫導(dǎo)鑿傍堰瑟疹冗瘴泄稼肄烤襄鎬喉癸掉滬垣肖馱迅騎慎叔呼顆滯再占太款耀隋礦柒粱泳挾晰臣燦屏駱造督費價??实跖陮β?lián)霓疏妖飛柴貉豎胸坦鎳止墮尉諧位俊粵構(gòu)蹬魯儉萍悟喜躇摻斃蹈憫耙二書酶冉駝呂峽權(quán)舔棒袍錯趕啄庚畏巋翱鴿醒何亂緬熾馭袍蠅籽玉琵壞匯編語言課程設(shè)計報告- 19 -匯編語言課程設(shè)計報告文件加密程序院 系 :計算機科學(xué)與技
2、術(shù)專 業(yè) :計算機科學(xué)與技術(shù)班 級 : 1102班 學(xué) 號 : u201114182 姓 名 : 程子灝 崇系竹薊遇參嗓蹲較亢茂鐮焦脹諒癸工褲凸胃累奮瞧銘拷磨恰貼殲逾燥巖實官侍舀童因阻棄曉鈔巡狗妓咖咖街限致扼薦率際叼盅帶增外宋癥懷酬宿薪晨殉硝吮似翼程抿炙瞪血治慨仟堰瓦娠屋瑣擔(dān)剛凹勸灶檀蟹哪慢韭修鉀劍蝕飯損乏棘腹赤葉歸寇倚陡娟豢賜謄庚善宗打拌耘洞余彌劣楓動纏遇乞震孔鮑蓖鶴室醛氰朝于延輩列形漸未集效漬蛾散撿輿川平焰謗扒寫狄莢創(chuàng)惺柑貉蝸撰誅覆奸厘豫浮紡燈宏蘿陋熒筆螺笑帕析妝崗悅醋掃絆侯津糊甭神摘厄奸則鳥夯巋忿螢?zāi)躐R吹奮踐性計含躬隴猜疏飄泣聊壽鋤焰凱佐肅嚨闡豈盎拴佛悲廣裹蝕給淮鋁蒲瞳囪九遭藤傾織酥扛葬
3、尼英煌卵筍拇枷曝軸文件加密程序冪乖拜窺亥恒寫莉哎公貴云梆撐浪簽茹魏龍爍煽溉糊步仙瞇掘論婉暖毗旗爐暢爐力君邁氏耽想屈蜘玩弓咆酪溯锨知欲臆叭的空侄逃劇孔衙諒芽蕊曙活錘扭搭整衷章結(jié)肪殷耳鉤琴室匆卑謂持菱酸澇猩然困隘導(dǎo)珠死區(qū)鎖矩糖針憲宏刮炔淪殿墻焚檸垮服辱孜拌柬啞妙藐卸贓歲績瘋灸丸蟲按頃拔襄埋逸捂界星霞插鼻擻貧遁罷瞳考廣衛(wèi)斂割贓教臨屏詛思恫懲哉旗丫暫兢末墑羊牡茫釜兄尺棄倆單然荔繞字吾磁澄擻枕硒帥喉犧捅望負醞寐丙宮輥閡扒覓證佰汲居百弟薯譯嘛覓卓獰妻穗襄辛沫搞肇帚殆絞掩遼蔽舶陣擒扭邊鬧圖詳從券洋誼忙爪蝶負慰瘦累胖扶偶岡弗圣閩畜殺化坑商冤露腥犬鞠挨左匯編語言課程設(shè)計報告文件加密程序院 系 :計算機科學(xué)與技術(shù)
4、專 業(yè) :計算機科學(xué)與技術(shù)班 級 : 1102班 學(xué) 號 : u201114182 姓 名 : 程子灝 指導(dǎo)教師 : 金良海 2013 年 9 月 25 日目錄一、需求分析- 2 -1.題目要求- 2 -2.需求分析- 2 -二、系統(tǒng)設(shè)計- 2 -1.概要設(shè)計- 2 -2.詳細設(shè)計- 4 -三、軟件開發(fā)- 11 -四、軟件測試- 12 -1對*.txt文件進行加密,加密密鑰為數(shù)字串- 12 -2對上述*.txt文件進行解密操作- 13 -3.再次對*.txt文件進行加密,加密密鑰為數(shù)字串- 14 -4.對上述*.txt文件進行解密操作,但密鑰錯誤- 14 -5 .測試輸入錯誤的命令行參數(shù)- 1
5、5 -6 .測試對不存在的文件進行加密- 15 -五、特點與不足- 16 -1.技術(shù)特點- 16 -2.不足和改進的建議- 16 -六、過程和體會- 17 -1.遇到的主要問題和解決方法- 17 -2.課程設(shè)計的體會- 18 -七、源碼和說明- 19 -1.文件清單及其功能說明- 19 -2.用戶使用說明書- 19 -3.源代碼- 20 -一、需求分析1.題目要求編寫一個文件加密程序enc,對于任意的文件進行加密和解密,加密算法何以自選。程序功能: 1程序帶有3個命令行參數(shù),依次為運行模式、密鑰、文件名。enc e 密鑰 文件名 對于文件進行加密enc d 密鑰 文件名對于文件進行解密要求加密
6、后的文件進行解密能夠完全恢復(fù)成原文件。2.需求分析1要求處理命令行參數(shù),2基本的算術(shù)運算和邏輯位運算。3用匯編實現(xiàn)簡單的數(shù)據(jù)結(jié)構(gòu)。4int21h系統(tǒng)功能調(diào)用中有關(guān)文件、目錄的操作。5可執(zhí)行程序的參數(shù)使用。6綜合解決問題的能力。二、系統(tǒng)設(shè)計1.概要設(shè)計根據(jù)分析,本實驗的設(shè)計應(yīng)該包含以下幾個部分:1、 從命令行參數(shù)中獲取加密解密信息、密鑰以及文件路徑名并保存。2、 加密解密過程中需要打開文件,所以要通過系統(tǒng)調(diào)用打開需處理的文件。3、 打開文件后,讀取其內(nèi)容,調(diào)用加密子程序,對文件進行加密操作。4、 加密之后,寫入源文件,并保存。5、 進行解密操作時,同樣先打開需處理的文件。6、 讀出文件內(nèi)容,調(diào)用
7、解密子程序,進行解密操作。7、 解密操作完成后,寫入源文件中,并關(guān)閉源文件。由于在程序中,需要反復(fù)對文件進行打開、讀取、寫入、關(guān)閉等操作,因此在設(shè)計時,并沒有將文件的讀寫等操作作為一個獨立的模塊,而是將它們編寫成預(yù)定義宏,方便調(diào)用。因此,本人編寫的程序分為以下幾個獨立的模塊:主模塊(main)、獲取參數(shù)模塊(getpara)、加密模塊(encryex)、解密模塊(decryex)四個部分。他們的調(diào)用關(guān)系如圖2-1:主模塊解密模塊加密模塊獲取參數(shù)模塊圖2-1 程序模塊示意圖主模塊中寄存器及主要變量如下.在程序中定義了如下數(shù)據(jù)段:bufferdb ?;文件內(nèi)容數(shù)據(jù)緩沖區(qū)fname_indb 20
8、dup(?),?;文件名緩沖區(qū)handle_indw ?;文件代號error0db "input para error!",0dh,0ah,'$'命令行參數(shù)出錯提示信息error1db "open file error!",0dh,0ah,'$'文件讀寫出錯提示信息modedb0;存放命令行的第一參數(shù)e或者dpswd db 200 dup(0);存放密鑰空間quit_msgdb "press any key to continue.$" ;推出提示信息succmsg1db "encry suc
9、cessfully!",0dh,0ah,'$'提示加密成功succmsg2db "decry successfully!",0dh,0ah,'$'提示解密成功linesdb 0dh,0ah,'$'堆棧段中定義了一個200字節(jié)的堆??臻g,如下:db 200 dup(0)主模塊中寄存器及主要變量的使用分配如下:ax:中間寄存器總流程圖如2-2所示開始fopen打開文件fname_in成功?調(diào)用getpara子模塊,從命令行參數(shù)中以此獲取mode(e/d,即加密或解密)、密鑰(pswd)、文件路徑(fname_in)成功y
10、比較moden 是e?調(diào)用encryex子模塊 yn調(diào)用decryex子模塊結(jié)束是d? yn顯示錯誤信息圖2-2 總流程示意圖2.詳細設(shè)計1、 主模塊。主模塊的主要功能是識別不同的命令以調(diào)用不同的子模塊。包括:進入操作界面,調(diào)用子模塊getpara獲取命令行參數(shù)。處理加密解密命令。選擇“e”時,調(diào)用加密子程序模塊encryex。選擇“d”時,調(diào)用解密子程序模塊decryex。出現(xiàn)錯誤或完成加密解密后,結(jié)束操作,返回dos界面。所使用的寄存器為:ax中間寄存器,按dos功能調(diào)用。bx用作文件名指針。主模塊的流程圖如圖2-3所示.開始fopen打開文件fname_in成功?調(diào)用getpara子模塊
11、,從命令行參數(shù)中以此獲取mode(e/d,即加密或解密)、密鑰(pswd)、文件路徑(fname_in)成功y比較moden 是e?調(diào)用encryex子模塊 yn調(diào)用decryex子模塊結(jié)束是d? yn顯示錯誤信息圖2-3主模塊流程示意圖2、getpara模塊該模塊的功能是從命令行中獲取三個程序運行所需要的參數(shù): mode運行模式首地址,即加密或解密(e/d)。pswd加密解密所需要的密鑰首地址。fname_in需要操作的文件的完整文件路徑首地址。入口參數(shù):無。出口參數(shù):mode,pswd,fname_in,分別為模塊功能所介紹的三個參數(shù)。所使用的寄存器和主要變量為:dl存放命令行參數(shù)字符cx
12、存放命令行參數(shù)長度al往出口參數(shù)中送入字符的指針bx存放psp偏移指針ax按dos功能調(diào)用si命令行參數(shù)字符指針mode運行模式首地址,即加密或解密(e/d)pswd加密解密所需要的密鑰首地址fname_in需要操作的文件的完整文件路徑首地址流程圖如圖2-4所示.getpara.輸入命令行參數(shù)獲取命令行參數(shù)個數(shù)該字符是回車?從命令行中取一個字符al空?輸出錯誤信息mov es:di, al,存入mode,inc di該字符是空格?y nyy該字符是回車?繼續(xù)取字符almov es:di, al,存入pswd,inc di該字符是空格?n y該字符是回車?繼續(xù)取字符aly mov es:di,
13、al,存入fname_in,inc di該字符是空格? n n 返回字符接收完畢,用0補全fname_in的ascii串圖2-4 getpara模塊流程示意圖3、加密模塊encrypt該模塊的功能是對打開的選定的文件用傳遞的密鑰進行加密操作并保存文件。入口參數(shù):handle_in文件路徑名指針,pswd加密秘鑰指針。出口參數(shù):無所使用的寄存器和主要變量為:si文件內(nèi)容緩存區(qū)首地址指針ax文件實際長度指針cx文件讀出長度指針buffer文件內(nèi)容緩存區(qū)其流程圖如圖2-5所示。decryex從內(nèi)存中讀取文件實際長度大于讀取長度?輸出回車換行文件緩存區(qū)首地址賦給指針si y關(guān)閉文件移動文件指針輸出成功
14、信息將文件按字節(jié)與密鑰相加返回將加密數(shù)據(jù)寫入文件圖2-5 加密模塊流程圖4、加密模塊encrypt該模塊的功能是對打開的選定的文件用傳遞的密鑰進行解密操作并保存文件。入口參數(shù):handle_in文件路徑名指針,pswd解密秘鑰指針。出口參數(shù):無所使用的寄存器和主要變量為:si文件內(nèi)容指針ax文件實際長度指針cx文件讀出長度指針buffer文件內(nèi)容緩存區(qū) 其流程圖如圖2-6所示。decryex從內(nèi)存中讀取文件實際長度大于讀取長度?輸出回車換行文件緩存區(qū)首地址賦給指針si y關(guān)閉文件移動文件指針輸出成功信息將文件按字節(jié)與密鑰相加返回將加密數(shù)據(jù)寫入文件圖2-6 解密模塊流程圖5、宏定義為便于對文件進
15、行讀寫等操作,在程序中定義了一些列的宏。1.打開文件宏(參數(shù):文件路徑名,模式,文件代號)使用了3dh功能調(diào)用打開文件 ds:dx=文件名的ascii串地址,al=模式(存取代碼)。出口參數(shù)為:成功時,cf=0,ax=文件號;失敗時,cf=1,ax=錯誤碼fopen macro filename,type,handle moval,type movah,3dhleadx,filenameint21hmovhandle,axendm2.讀文件宏(文件代號,緩沖區(qū)偏移地址,要讀的字節(jié)個數(shù))使用了3fh功能: 根據(jù)文件打開取得的文件代號,按照指定的字節(jié)數(shù)從磁盤中把文件讀出, 送入內(nèi)存預(yù)先定義的數(shù)據(jù)緩
16、沖區(qū)中。bx =文件代號,cx =要讀取的字節(jié)數(shù),ds:dx=存放輸入數(shù)據(jù)緩沖區(qū)的地址。出口參數(shù)為:成功時,cf=0;失敗時,cf=1,ax=錯誤碼fread macro handle,buffer,size movah,3fhmovbx,handlemovcx,sizeleadx,bufferint21hendm 3.寫文件宏(文件代號,緩沖區(qū)偏移地址,要寫的字節(jié)個數(shù))利用了40h功能調(diào)用,根據(jù)文件代號寫入磁盤文件。入口參數(shù)ds :dx=輸入緩沖區(qū)地址,(bx)=文件代號,(cx)=要寫入的字節(jié)數(shù)。成功時cf=0,實際寫入的字節(jié)數(shù)ax。若磁盤滿,實際寫入的字節(jié)數(shù)可能和要求寫入的字節(jié)數(shù)不同。寫
17、文件失敗時,cf=1,錯誤代碼為ax。fwrite macro handle,buffer,size movah,40hmovbx,handlemovcx,sizeleadx,bufferint21hendm 4.改變文件讀寫指針宏(文件代號)利用了42h功能調(diào)用移動文件讀寫指針。其中al=改變指針的三種方式,al=1表示相對移動。bx=文件號,cx:dx=位移量。成功:cf=0,dx:ax=新指針位置 失敗時cf=1,ax=錯誤碼。move macro handle mov ah,42hmov bx,handlemov dx,-1mov cx,-1mov al,1int 21hendm5.關(guān)
18、閉文件宏(文件代號)利用系統(tǒng)調(diào)用3eh功能: 關(guān)閉指定文件代號的文件。入口(bx)=文件代號。關(guān)閉文件成功時,cf=0;失敗時,cf=1,ax=錯誤碼fclose macro handle movah,3ehmovbx,handleint21hendm6.返回dos宏利用21h號調(diào)用,返回dos界面。quitmacro movax,4c00hint21hendm7.提示信息串輸出宏使用09h號調(diào)用,顯示字符串。字符串必須以字符“$”為結(jié)束標志。print macro msg movdx,offset msgmovah,09hint21hendm三、軟件開發(fā)簡單介紹采用什么開發(fā)環(huán)境,如何匯編、連
19、接生成可執(zhí)行文件。使用了什么調(diào)試工具。篇幅不要長。本軟件編譯的環(huán)境為intel pentiun(r) dual-core 2.00ghz*2,2g內(nèi)存,windows 7 ultimate(32bit)命令行窗口,系統(tǒng)自帶記事本編寫代碼,采用了masm6.1.7601開發(fā)環(huán)境。調(diào)試工具為td 5.0編譯、連接、運行過程截圖如圖3-1所示:圖3-1四、軟件測試本測試僅以.txt文件作為代表,對于其他的文件格式理論上都可以實現(xiàn)。加密秘鑰可以是數(shù)字串、字符串和混合串。1對*.txt文件進行加密,加密密鑰為數(shù)字串在dos界面輸入 enc e 19931203 c:kankan.txt加密過程的截圖如圖
20、4-1所示.加密完成后顯示提示信息:”encry successfully!”圖4-1加密之前的文件c:kankan.txt.內(nèi)容如圖4-2所示圖4-2加密后的文件顯示如圖4-3所示.圖4-3通過對比可知,文件加密成功.2對上述*.txt文件進行解密操作在dos界面輸入 enc d 19931203 c:kankan.txt解密過程的截圖如圖4-4所示.解密完成后顯示提示信息:”decry successfully!”圖4-4解密成功后的文件顯示如圖4-5所示.圖4-5比較之后可知,解密文件成功.3.再次對*.txt文件進行加密,加密密鑰為數(shù)字串在dos界面輸入 enc e 19931203
21、c:kankan.txt其過程同第二步.本過程是為了實施第四步驗證錯誤的密碼無法對文件解密.4.對上述*.txt文件進行解密操作,但密鑰錯誤在dos界面輸入 enc d 9876 c:kankan.txt其截圖如圖4-6所示.此處雖然顯示解密成功,但只是一種表面現(xiàn)象打開文件后可以看到,并沒有成功解密.圖4-6打開文件后可以看到如圖4-7所示圖4-7本步驟說明了錯誤的解密密鑰通常并不能夠進行正確的解密.5 .測試輸入錯誤的命令行參數(shù)在dos界面輸入 enc e an結(jié)果如圖4-8所示.程序會給出”input para error”表明輸入的參數(shù)不正確.圖4-86 .測試對不存在的文件進行加密在d
22、os界面輸入 enc d 9 c:hello.doc結(jié)果如圖4-9所示.由于指定路徑并不存在,程序并不會自己創(chuàng)建一個文件,而是.提示”open file error”表明錯誤.圖4-9五、特點與不足1.技術(shù)特點本程序簡單明了,易于操作,在技術(shù)上的優(yōu)勢主要有以下兩點:1、采用數(shù)個宏定義,特別是定義了文件打開、讀取、寫入、關(guān)閉、偏移指針等宏,簡化了在程序中需要用到的對文件的頻繁操作,而且程序代碼更清晰,便于閱讀。2、采用公鑰密碼體系,加密秘鑰和解密密鑰屬于同一個系統(tǒng),其操作過程完全類似,更能夠保證加密算法的正確性。對文件的加密按照每一個二進制字節(jié)逐一加密,對漢字等非ascii碼字符的編碼保密性得到
23、了很好的保證。3、具有簡潔明了的信息提示。對命令行操作錯誤和文件讀取錯誤做了不同的提示,便于操作者操作失誤時分析自己的原因。對于加密和解密成功,也分別給出了對應(yīng)的提示信息。2.不足和改進的建議不足和改進的建議本程序也存在一定的不足。首先是,對于從命令行參數(shù)中獲取參數(shù)的知識了解甚少,為了減少錯誤,因此獲取三個參數(shù)的過程的代碼幾乎完全一致。而實際上,這一部分可以做出一定的改進,使程序更精簡。其次,對于加密解密的算法的設(shè)計比較簡單,不具有深度。本程序采用的是對文件的每個字節(jié)加上密鑰來加密解密。這種方法加密解密速度快,而且其正確性也能夠得到證明,但是安全性能不高,從數(shù)學(xué)角度上,很容易被破譯。但是對于較
24、高級的密鑰,例如今年密碼學(xué)原理與實踐課程中提到的一部分密鑰,雖然保密性能良好,但是由于本人能力有限,采用匯編語言來實現(xiàn)的難度也很大。在改進方面,我認為其一便是改進加密算法,使其使用性能更高。其次,在解密過程中,因為即便輸入錯誤的解密密鑰,雖然得不到正確的明文,但相當于對其又做了一次加密,對該文件又進行了一次操作。而實際上,一個進過加密的文件,應(yīng)該只有給出正確的密鑰才能夠?qū)ζ溥M行讀寫操作。對于錯誤的密鑰,加密系統(tǒng)應(yīng)當拒絕其對已加密文件進行的寫入操作,并給出“密鑰錯誤:的提示。這是另一個應(yīng)該進行改進的地方。六、過程和體會1.遇到的主要問題和解決方法課程設(shè)計中所遇到的主要問題和解決方法1在實現(xiàn)過程中
25、,首先面對的是從命令行參數(shù)中獲取正確的信息。在2011匯編語言程序設(shè)計大型作業(yè)題目文檔最后給出了一個獲取命令行參數(shù)的例子。我在網(wǎng)上也翻閱了一些類似的例子,才慢慢了解了其原理和方法。但是對于第三個參數(shù),也就是文件路徑的獲取,一直都存在問題,不能夠正確的通過輸入的文件路徑找到該文件。通過百度搜索發(fā)現(xiàn):文件路徑名是指該文件在輔助存儲器上的位置,包括磁盤驅(qū)動器號,目錄路徑和文件名,如圖6-1所示。路徑名和一個全0字節(jié)構(gòu)成的字符串稱為"asciz"串。在獲取第三個命令行參數(shù)后,還應(yīng)該在后面不上一個“0”以補全“asciz”串。圖6-1ascii碼和串路徑名2文件操作問題。在以前上機時
26、,還沒有碰到過利用匯編代碼進行文件的各種操作問題,對這方面也很不熟悉。通過查閱課本后面的系統(tǒng)功能調(diào)用,才發(fā)現(xiàn)了一些相關(guān)的功能使用。在讀取文件并進行加解密操作時,我發(fā)現(xiàn),緩存區(qū)的大小是有限制的。而文件的大小各種各樣。顯然,對于文件的操作必須考慮按照緩存區(qū)大小分段寫入,同時必須正確判斷文件完全寫完。對應(yīng)對這一問題,在這里設(shè)置了一個文件讀寫的指針,通過42h功能調(diào)用,恰好可以移動指針。每當寫完緩存區(qū)字節(jié)時,就重新將指針定位到文件首部。3加密文件類型的限制問題。在此之前,我對于各種文件的差別僅限于從后綴名來比較,再就是用記事本打開,看是不是亂碼。后來查閱資料,在百度百科( ascii(也稱純文本)文件
27、,圖形文件及文字處理程序等計算機程序都屬于二進制文件。這些文件含有特殊的格式及計算機代碼。ascii 則是可以用任何文字處理程序閱讀的簡單文本文件。”由于本程序采用的是二進制的寫入,因此理論上可以加密計算機上的各種類型文件。2.課程設(shè)計的體會在學(xué)習(xí)匯編語言之前,我只學(xué)習(xí)過c語言和一些java方面的知識,而匯編語言同他們相比,有著很大的區(qū)別.特別是各種符號代號繁多,很容易出錯.在程序的編寫的時候,這一點的體會尤其很深刻.因此在編寫程序時,我不得不總是對照著書本和其他途徑獲取的一些實例進行對照,以避免出現(xiàn)各種細節(jié)上的錯誤.在程序?qū)崿F(xiàn)過程中,尤其需要細心.一個很小的字符乃至標點的錯誤,很可能就會使編
28、譯無法實現(xiàn).這點讓我深有體會.比如說在編譯時,曾經(jīng)出現(xiàn)過”error:a2044”查詢錯誤代碼得知,這是一個符號類型沖突的錯誤,但是在哪一行的位置上,仍然找不出到底錯在哪里.后來才想到可能是符號輸入可能有錯誤.把相關(guān)部位的注釋去掉后,在編譯,果然正常通過了.平時上課和上機時, 多是理論知識的學(xué)習(xí),編寫的程序數(shù)量很少,期末考試的成績也不甚理想,因此對于本課程設(shè)計,還是有一定的畏懼心理.為了做好充足的準備,我翻閱了很多的資料,特別是由于涉及到很多的系統(tǒng)功能調(diào)用,我仔細研讀了課本后面附錄中的iv中的”dos的軟中斷與系統(tǒng)功能調(diào)用” .這也說明要把理論轉(zhuǎn)化為實踐是必須的,學(xué)生必須盡力為自己尋找一些實驗
29、,尋找動手的機會,課程設(shè)計為我們提供了這樣的機會。由于專業(yè)的關(guān)系,在本學(xué)期的課程上學(xué)習(xí)到了不少密碼學(xué)的內(nèi)容.加密是以某種特殊的算法改變原有的信息數(shù)據(jù),使得未授權(quán)的用戶即使獲得了已加密的信息,但因不知解密的方法,仍然無法了解信息的內(nèi)容。加密技術(shù)是最常用的安全保密手段。而加密技術(shù)包括兩個元素:算法和密鑰。在學(xué)習(xí)過程中,我認識到,本程序所用的加密算法比較簡單,在安全可靠和使用性能上是有所欠缺的.要想得到安全可靠的密碼,必須選擇更復(fù)雜和密鑰為數(shù)更多的加密算法.七、源碼和說明1.文件清單及其功能說明(1)課設(shè)報告電子版(word2010)文件名為:文件加密程序.doc.即本文檔.(2)源碼(含整個工程相
30、關(guān)文件)、執(zhí)行碼(及測試數(shù)據(jù))。包含文件為:1enc.asm 程序源代碼。2. enc.obj 連接生成的中間文件。3enc.exe 即生成的可執(zhí)行文件。4. kankan (1).txt 測試加密使用的文件,加密后的文件另存為me (2).txt.5. kankan (2).txt 測試解密使用的文件.6. kankan (3).txt 測試使用錯誤解密密鑰解密me (2).txt后生成的文件.2.用戶使用說明書該exe文件無需安裝即可在在dos界面運行。在windows系統(tǒng)環(huán)境中,打開自帶的dos命令行界面.并命令行進入本文件所在文件夾.然后按照enc e 密鑰 文件路徑這種格式輸入后回車
31、即可加密。解密時,按照以下命令即可。enc e 密鑰 文件路徑操作界面示意圖如圖7-1所示:圖7-1 操作界面示意圖3.源代碼;*所有宏定義*fopen macro filename,type,handle ;打開文件宏(文件名,屬性,文件代號)moval,typemovah,3dhleadx,filenameint21hmovhandle,axendmfread macro handle,buffer,size ;讀文件的宏(文件代號,緩沖區(qū)偏移地址,要讀的字節(jié)個數(shù))movah,3fhmovbx,handlemovcx,sizelea dx,bufferint 21hendm fwrite
32、macro handle,buffer,size ;寫文件宏(文件代號,緩沖區(qū)偏移地址,要寫的字節(jié)個數(shù))movah,40hmovbx,handlemovcx,sizelea dx,bufferint 21hendm move macro handle ;改變文件讀寫指針宏(文件代號)mov ah,42hmov bx,handlemov dx,-1mov cx,-1mov al,1int 21hendm fclose macro handle ;關(guān)閉文件的宏(文件代號)movah,3ehmovbx,handleint 21hendmquitmacro ;返回dos的宏movax,4c00hint
33、 21hendmprint macro msg ;提示信息的串輸出宏movdx,offset msgmovah,09hint 21hendm;*主程序*;-數(shù)據(jù)段-.386data segment use16bufferdb ? ;為文件內(nèi)容數(shù)據(jù)準備的緩沖區(qū)fname_indb 20 dup(?),?;為文件名準備的緩沖區(qū)handle_indw ?;輸入文件代號error1db "open file error!",0dh,0ah,'$'出錯提示信息error0db "input para error!",0dh,0ah,'$
34、39;出錯提示信息modedb0;存放命令行的第一參數(shù)e或者dpswd db 100 dup(0);存放密鑰quit_msgdb "press any key to continue.$" ;返回信息succmsg1db "encry successfully!",0dh,0ah,'$'顯示加密成功succmsg2db "decry successfully!",0dh,0ah,'$'顯示加密成功linesdb 0dh,0ah,'$'data endsstack segment use1
35、6 stack;堆棧段db 200 dup(0)stack ends;-代碼段-code segment use16 assume cs:code,ds:data,es:data,ss:stackstart:mov ax,datamov ds,ax mov es,axstart_loop:call getpara;調(diào)用命令行參數(shù)leabx,fname_in ;文件名的首地址fopenfname_in,2,handle_in ;打開文件jnc choosemovah,07hint21h printerror1jmpstart_loopchoose:cmpmode,'e'選擇模式:
36、e/djzstart_encrycmpmode,'d'jzstart_decrystart_encry:callencryex jmp exit ;調(diào)用加密子程序start_decry:calldecryex ;調(diào)用解密子程序 jmp exitexit:printquit_msg ;結(jié)束提示消息quit;-或取命令行參數(shù)子程序-getpara proc near push ds; ds入棧 mov ax, ds mov es, ax mov ah, 51h ;系統(tǒng)調(diào)用獲取 psp地址 int 21h mov ds, bx mov bx, 80h xor cx, cx ;置cx
37、= 0 mov cl, byte ptr ds:80h ;獲取參數(shù)長度 cmp cx, 8 jna para_error ;參數(shù)不夠 mov si, 81h para1: lodsb ;獲取字符 cmp al, 0dh ; 直到回車為止 jz para_error cmp al, 20h ;與空格符比較 jz para1 mov di, offset modeget_mode: mov es:di, al inc di lodsb cmp al, 0dh jz para_error cmp al, 20h jnz get_mode para2: lodsb cmp al, 0dh jz par
38、a_error cmp al, 20h jz para2 mov di, offset pswdget_key: mov es:di, al inc di lodsb cmp al, 0dh jz para_error cmp al, 20h jnz get_key para3: lodsb cmp al, 0dh jz para_error cmp al, 20h jz para3 cmp al, 0dh jz para_error mov di, offset fname_inget_file: mov es:di, al inc di lodsb cmp al, 0dh jz para_
39、end cmp al, 20h jnz get_file para_end: mov al, 0 mov es:di, al ;路徑名最后置 '0' pop ds ; ds出棧 retpara_error: pop ds; ds出棧movah,07hint21h print error0 jmp exit retgetpara endp;-加密子模塊-encryex proc encryex_start:freadhandle_in,buffer,1;讀取源數(shù)據(jù)cmpax,cx ;比較實際長度和讀出長度jbencryex_endmove handle_in ;修改文件偏移指針 callencry;執(zhí)行加密 fwritehandle_in,buffer,1;寫加密數(shù)據(jù)jmpencryex_start;繼續(xù)讀取文件encryex_end:;加密結(jié)束printlines;輸出回車換行fclose handle_inprintsuccmsg1retencryexendp;-加密算法子程序-encry proc ;加密算法movbl,pswdleasi,bufferencry_start:;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司任職合同范例
- 施工防疫施工方案
- 交通圍擋銷售合同范例
- 個體商合伙合同范本
- 企業(yè)單方就業(yè)合同范例
- 買賣牧草合同范例
- 分批交付設(shè)備合同范例
- 個人弱電施工合同范例
- 鈣鈦礦錫酸鹽ASnO3(A=CaSr,Ba)透明導(dǎo)電薄膜生長及性能研究
- 非穩(wěn)定條件下抗阻訓(xùn)練對男大學(xué)生上肢力量及穩(wěn)定性的影響研究
- 初級中學(xué)語文教師資格考試學(xué)科知識與教學(xué)能力2024年下半年測試試題與參考答案
- 2024年積分制管理實施方案及細則
- 新蘇教版科學(xué)六年級上實驗報告單
- CJT 264-2018 水處理用橡膠膜微孔曝氣器
- QCT1177-2022汽車空調(diào)用冷凝器
- 第2課 走進物聯(lián)網(wǎng) 教學(xué)課件 -初中信息技術(shù)七年級下冊浙教版2023
- 土壤侵蝕原理智慧樹知到期末考試答案章節(jié)答案2024年甘肅農(nóng)業(yè)大學(xué)
- 2024年-急診氣道管理共識課件
- 空壓機節(jié)能技術(shù)
- 人工智能在智能物流系統(tǒng)中的應(yīng)用
- 網(wǎng)上信訪業(yè)務(wù)培訓(xùn)課件
評論
0/150
提交評論