C語(yǔ)言程序設(shè)計(jì) 加密解密系統(tǒng)_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì) 加密解密系統(tǒng)_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì) 加密解密系統(tǒng)_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì) 加密解密系統(tǒng)_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì) 加密解密系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、課程設(shè)計(jì)說(shuō)明書設(shè)計(jì)名稱:c語(yǔ)言課程設(shè)計(jì)題目:加密解密系統(tǒng)姓名: 專業(yè):自動(dòng)化班級(jí):08級(jí)1班學(xué)號(hào): 指導(dǎo)老師: 日期:2010年7月10日課程設(shè)計(jì)任務(wù)書 自動(dòng)化 專業(yè) 08 年級(jí) 01 班 一、設(shè)計(jì)題目加密解密系統(tǒng)二、主要內(nèi)容系統(tǒng)的數(shù)據(jù)項(xiàng)主要包括:文件導(dǎo)入、文件讀寫、密鑰函數(shù)。要求具有以下功能:(1)系統(tǒng)以固定方式工作。v(2)加密解密文件。(3)能保證數(shù)據(jù)的完整加解迷和數(shù)據(jù)的無(wú)失真。(具體要求圍繞課程設(shè)計(jì)的目的和意義,基本要求如下:1、認(rèn)真閱讀c語(yǔ)言課程設(shè)計(jì)指導(dǎo)書,明確課程設(shè)計(jì)的目的、意義和要求;2、快速總結(jié)c程序設(shè)計(jì)語(yǔ)言的精髓,如:函數(shù)的概念、函數(shù)的設(shè)計(jì)和函數(shù)的調(diào)用;3、快速熟悉tuber

2、 c 或c+的上機(jī)環(huán)境。能熟練進(jìn)行高級(jí)編輯操作(特別是字塊操作);熟悉步進(jìn)式、斷點(diǎn)跟蹤的程序調(diào)試方法,提高工作效率。4、根據(jù)“課程設(shè)計(jì)題目”,采用結(jié)構(gòu)化的程序設(shè)計(jì)思想,確定系統(tǒng)的總體設(shè)計(jì)方案、確定時(shí)間進(jìn)度。如果是多人共一題,則要首先完成小組內(nèi)的人員分工及安排,不允許重題現(xiàn)象。5學(xué)習(xí)并了解良好的程序設(shè)計(jì)風(fēng)格。按質(zhì)、按量、并按時(shí)間完成課程設(shè)計(jì)的任務(wù)。6提供可運(yùn)行的課程設(shè)計(jì)系統(tǒng),參加上機(jī)面試答辯。本次課程設(shè)計(jì)的重點(diǎn)是:學(xué)會(huì)設(shè)計(jì)并編寫函數(shù),掌握好各函數(shù)之間的調(diào)用關(guān)系;利用文件操作函數(shù),建立數(shù)據(jù)庫(kù)并完成對(duì)數(shù)據(jù)庫(kù)的各種操作;掌握幾種典型算法的應(yīng)用。同時(shí)鍛煉學(xué)生根據(jù)題目進(jìn)行分析、設(shè)計(jì)、編碼、調(diào)試程序和書寫必

3、要文檔的綜合處理能力,從實(shí)踐中學(xué)習(xí)并體會(huì)程序設(shè)計(jì)的結(jié)構(gòu)化思想和設(shè)計(jì)方法。一、 進(jìn)度安排依照教學(xué)計(jì)劃,課程設(shè)計(jì)時(shí)間為2周。按照軟件工程的思想,軟件系統(tǒng)的分析設(shè)計(jì)至關(guān)重要,并要充分重視書寫“文檔”。避免甚至杜絕“拿到題目就編碼”的現(xiàn)象。建議將時(shí)間分為三個(gè)階段:第一階段,根據(jù)題目要求,拿出系統(tǒng)的總體設(shè)計(jì)方案:即構(gòu)思各程序模塊的算法,并畫出相應(yīng)的n-s圖,同時(shí)編寫相應(yīng)的文檔;第二階段,根據(jù)n-s圖編寫程序代碼并單獨(dú)調(diào)試,再將調(diào)試通過(guò)的各個(gè)子模塊進(jìn)行集成調(diào)試;第三階段,歸納文檔資料,按要求填寫在課程設(shè)計(jì)說(shuō)明書上,并參加答辯。三個(gè)階段時(shí)間分配的大概比例是: 35:45:20。二、 完成后應(yīng)上交的材料1課程

4、設(shè)計(jì)的題目、系統(tǒng)的總功能和各子模塊的功能;2題目的設(shè)計(jì)思想(或算法)簡(jiǎn)述;3主要程序的框圖(要求用n-s圖);4源程序代碼(要求在關(guān)鍵的位置有注釋,從而增加程序的可讀性);5課程設(shè)計(jì)的總結(jié)報(bào)告,主要包括以下內(nèi)容:(1)課程設(shè)計(jì)中遇到的主要問(wèn)題和解決方法;(2)你的創(chuàng)新和得意之處;(3)設(shè)計(jì)中存在的不足及改進(jìn)的設(shè)想;(4)本次課程設(shè)計(jì)的感想和心得體會(huì)。以上完成的源程序及相關(guān)文檔,填寫在課程設(shè)計(jì)說(shuō)明書上,要求干凈整潔,符合課程設(shè)計(jì)的要求和規(guī)范。三、 總評(píng)成績(jī)指導(dǎo)教師 簽名日期 年 月 日系 主 任 審核日期 年 月 日c語(yǔ)言程序設(shè)計(jì)目錄一、系統(tǒng)功能61、系統(tǒng)需求分析62、系統(tǒng)功能分析73、系統(tǒng)總框

5、架7二、功能模塊的描述71.數(shù)據(jù)結(jié)構(gòu)72.main()主函數(shù)8三、源程序9加密9解密10四、課程設(shè)計(jì)總結(jié)121、設(shè)計(jì)過(guò)程的感受與體會(huì)122、遇到的問(wèn)題與解決方法123、創(chuàng)新與得意之處134、設(shè)計(jì)中存在的不足及改進(jìn)的設(shè)想13一、系統(tǒng)功能1、系統(tǒng)需求分析在日常工作和學(xué)習(xí)中數(shù)據(jù)的保密是一項(xiàng)非常重要的工作,而數(shù)據(jù)的加密與解密是又是一項(xiàng)腦力與數(shù)學(xué)的結(jié)晶,我們就需要計(jì)算機(jī)來(lái)幫助我們實(shí)現(xiàn)這項(xiàng)繁瑣的工作。本系統(tǒng)的設(shè)計(jì)主要是解日常生活工作中簡(jiǎn)單的加解密工作,并作為自動(dòng)化專業(yè)大二實(shí)習(xí)作業(yè),讓我們能更家熟悉c語(yǔ)言編程,以次來(lái)鍛煉大家,讓大家有實(shí)際應(yīng)用c語(yǔ)言的能力。加密是以某種特殊的算法改變?cè)械男畔?shù)據(jù),使得未授權(quán)

6、的用戶即使獲得了已加密的信息,但因不知解密的方法,仍然無(wú)法了解信息的內(nèi)容。加密解密系統(tǒng)是一個(gè)為單機(jī)用戶開發(fā)的保持文件信息秘密性的軟件系統(tǒng)。加密時(shí)將用戶的明文信息轉(zhuǎn)化為只有擁有的者才可以查看的信息的過(guò)程;解密是將密文用用戶的將密文轉(zhuǎn)化為明文的過(guò)程。對(duì)于我這個(gè)程序來(lái)說(shuō)是具有可行性的,加密算法數(shù)據(jù)加密的基本過(guò)程就是對(duì)原來(lái)為明文的文件或數(shù)據(jù)按某種算法進(jìn)行處理,使其成為不可讀的一段代碼,通常稱為“密文”,使其只能在輸入相應(yīng)的密鑰之后才能顯示出本來(lái)內(nèi)容,通過(guò)這樣的途徑來(lái)達(dá)到保護(hù)數(shù)據(jù)不被非法人竊取、閱讀的目的。 該過(guò)程的逆過(guò)程為解密,即將該編碼信息轉(zhuǎn)化為其原來(lái)數(shù)據(jù)的過(guò)程本程序采用是移位法加密,既對(duì)文件中的數(shù)

7、據(jù)在ascii下進(jìn)行數(shù)據(jù)的移位,以實(shí)現(xiàn)數(shù)據(jù)的加密。另外我們要對(duì)程序進(jìn)行反復(fù)修改與論證以保證數(shù)據(jù)加密與解密的完整與正確性。2、系統(tǒng)功能分析 本系統(tǒng)的功能包括了數(shù)據(jù)加密、數(shù)據(jù)解密、文件導(dǎo)入功能,對(duì)加密文件實(shí)現(xiàn)解讀與加密功能。 3、系統(tǒng)總框架 加密主程序 解密主程序 輸入密鑰 輸入密鑰 打開待加密文件 打開加密文件 加密 解密 加密完成 解密完成 關(guān)閉文件 關(guān)閉文件 程序結(jié)束 程序結(jié)束二、功能模塊的描述1.main()主函數(shù)程序采用模塊化設(shè)計(jì),分別為加密程序和解密程序。主函數(shù)是程序的入口,各模塊獨(dú)立,可分塊調(diào)整,均由主函數(shù)控制。2. jiami函數(shù) 本函數(shù)通過(guò)編寫的算法對(duì)給出的文本文件內(nèi)容進(jìn)行加密。

8、此函數(shù)主要按asc碼進(jìn)行加密。首先打開文件,判斷需加密文件是否為空。再通過(guò)密鑰對(duì)密文進(jìn)行加密。導(dǎo)入文件打開只讀文件,用fp指向此結(jié)點(diǎn)打開只寫文件,用fp1指向此結(jié)點(diǎn)輸入密鑰,scanf(“%d”,&key) fp=null|fp1=nullyes noch+=key chz |chz&chayes noch-=26fputc(ch,fp1)fputc(ch,fp1)當(dāng)讀到的數(shù)據(jù)不為空printf(open file fail!);return;關(guān)閉文件,返回主函數(shù)3.jiemi函數(shù) 此函數(shù)是將被加密的文件通過(guò)解密算法,將其還原。其思想如下所示:導(dǎo)入文件打開只讀文件,用fp指向此結(jié)點(diǎn)輸入密鑰,s

9、canf(“%d”,&key) fp=nullyes noch-=key chz|chayes noch+=26putchar(ch)putchar(ch)當(dāng)讀到的數(shù)據(jù)不為空輸出錯(cuò)誤并返回關(guān)閉文件,返回主函數(shù)三、源程序加密#include#includevoid jiami()int key;char ch;file *fp,*fp1;printf(請(qǐng)輸入密鑰:);scanf(%d,&key);fp=fopen(待加文件.txt,r);fp1=fopen(加密文件.txt,w);if(fp=null)printf(待加密文件打開,請(qǐng)查找原因n!);return;while(ch=fgetc(f

10、p)!=eof)ch+=key; if(chz | chz&cha)ch-=26; fputc(ch,fp1);fclose(fp);fclose(fp1);void main()jiami(); printf(加密已成功,可以打開加密文件n);解密include#includevoid jiemi()char ch;int key;file *fp,*fp1;printf(請(qǐng)輸入密鑰:);scanf(%d,&key);fp=fopen(加密文件.txt,r);fp1=fopen(解密文件.txt,w);if(fp=null)printf(文件打開失敗,請(qǐng)查找原因n);return;while

11、(ch=fgetc(fp)!=eof) ch-=key; if(chz | cha) ch+=26;fputc(ch,fp1);fclose(fp);fclose(fp1);void main()jiemi(); printf(程序結(jié)束);四、課程設(shè)計(jì)總結(jié)1、設(shè)計(jì)過(guò)程的感受與體會(huì) 在進(jìn)行此次的c語(yǔ)言課程設(shè)計(jì)的時(shí)候,我已經(jīng)丟下c這門語(yǔ)言半年多了,同時(shí),我學(xué)習(xí)并使用java和c#進(jìn)行編程也有半年了,這次重新用回c語(yǔ)言,除了指針和文件那部分要重新掌握外,c總的來(lái)說(shuō)對(duì)我是沒(méi)有什么問(wèn)題的。在學(xué)習(xí)c前聽別人說(shuō)過(guò)c是最簡(jiǎn)單的,比那些面向?qū)ο蟮恼Z(yǔ)言要簡(jiǎn)單得多,學(xué)完c#后再回顧,發(fā)現(xiàn)原來(lái)c更難,因?yàn)閏只提供了很

12、少的庫(kù)函數(shù),什么都要自己寫,那些說(shuō)c簡(jiǎn)單的人,只因他們沒(méi)有用c做過(guò)復(fù)雜的東西罷了。所以開發(fā)大型軟件,光用c是不夠的。不過(guò)經(jīng)歷了這次的課程設(shè)計(jì),我也學(xué)到了很多東西,知道在不用數(shù)據(jù)庫(kù)的情況下軟件是怎樣保存數(shù)據(jù)的,知道了鏈表的好處,也讓我重新審閱了c。c貼近底層,可以更好地控制內(nèi)存,可以利用它對(duì)系統(tǒng)做更多的東西,比如病毒,可惜這些都沒(méi)教。這次的課程設(shè)計(jì)我第一次畫了n-s圖,但我是在做完這個(gè)項(xiàng)目之后才畫的,所以這些圖顯得繁瑣無(wú)比,沒(méi)有起到幫助我理解程序的作用。希望老師能先指導(dǎo)我們畫好流程圖再來(lái)開發(fā)。 2、遇到的問(wèn)題與解決方法編程的思想真是一理通百理明呀,我丟下c語(yǔ)言半年,編程的思想?yún)s一直沒(méi)丟,一些算法

13、上的問(wèn)題也能輕易解決。在一開始寫排序函數(shù)時(shí),發(fā)現(xiàn)升序排列沒(méi)有問(wèn)題,但降序排列時(shí)卻出錯(cuò)(是數(shù)組值沒(méi)有賦0的原因嗎?),于是我把降序函數(shù)寫成升序函數(shù)的倒序輸出。第二個(gè)問(wèn)題是在把鏈表賦值給結(jié)構(gòu)體變量時(shí)出錯(cuò)。因?yàn)橛胏#時(shí)可以直接用“=”來(lái)賦值給字符串,但c則必須用strcpy()函數(shù)才可以。這個(gè)問(wèn)題我請(qǐng)教了靠后才明白過(guò)來(lái),后來(lái)我也見到了很多人在這個(gè)問(wèn)題上出錯(cuò),于是我便幫他們解決了。重名的情況。由于考慮的不周全,沒(méi)有設(shè)計(jì)遇到重名的情況該怎么處理。3. 選擇單一。我們?cè)O(shè)計(jì)的程序中,只設(shè)計(jì)了按名字選擇,進(jìn)行操作,忽略了重名的情況。整個(gè)程序完成了,還有很多不完善的地方,希望自己以后辦事的時(shí)候要認(rèn)真,仔細(xì),考慮

14、周全。短短的三周課程設(shè)計(jì)結(jié)束了,但是這段時(shí)間里,我又學(xué)到了更多c 知識(shí),如:對(duì)象數(shù)組,string類,文件流等,同時(shí)我也被提醒以后辦事的時(shí)候要認(rèn)真,仔細(xì),考慮周全。也看到了團(tuán)隊(duì)精神和互幫互助的重要性。在此看來(lái),同學(xué)之間的互助是很重要的。3、創(chuàng)新與得意之處 在此次實(shí)訓(xùn)中我總結(jié)出了自己的很多不足,雖然作為一個(gè)初出茅廬的學(xué)生我還是對(duì)自己的加解密程序做出了一些改進(jìn),首先就是是自己的程序簡(jiǎn)單明了,讓人一看就明白,再次就是在程序運(yùn)行中加入了語(yǔ)言提示,方便人們找出自己的錯(cuò)誤并使程序運(yùn)行透明化。此加密程序我才用了對(duì)稱加密算法有時(shí)又叫傳統(tǒng)密碼算法,就是加密密鑰能夠從解密密鑰中推算出來(lái),同時(shí)解密密鑰也可以從加密密

15、鑰中推算出來(lái)。而在大多數(shù)的對(duì)稱算法中,加密密鑰和解密密鑰是相同的,所以也稱這種加密算法為秘密密鑰算法或單密鑰算法。它要求發(fā)送方和接收方在安全通信之前,商定一個(gè)密鑰。對(duì)稱算法的安全性依賴于密鑰,泄漏密鑰就意味著任何人都可以對(duì)他們發(fā)送或接收的消息解密,所以密鑰的保密性對(duì)通信性至關(guān)重要。其次它是算法公開、計(jì)算量小、加密速度快、加密效率高。4、設(shè)計(jì)中存在的不足及改進(jìn)的設(shè)想無(wú)法保存的n值是程序最大的bug,假如啟動(dòng)程序時(shí)沒(méi)有調(diào)用“1”的函數(shù)來(lái)輸入,則n值為0,想直接查看數(shù)據(jù)時(shí)會(huì)沒(méi)有輸出。暫時(shí)的解決方法是設(shè)計(jì)假如n為0,則默認(rèn)輸出前10個(gè)學(xué)生的數(shù)據(jù)。改進(jìn)的設(shè)想是當(dāng)程序要退出時(shí),用一個(gè)文件把n值保存起來(lái),重

16、新啟動(dòng)程序時(shí),n得到上次保持的數(shù),就可以不輸入而直接輸出上次保持的數(shù)了。另一個(gè)方法是永遠(yuǎn)不要結(jié)束這個(gè)程序。5體會(huì)心得在這兩個(gè)星期里天氣真的很熱,但通過(guò)這兩個(gè)星期的學(xué)習(xí),我知道了實(shí)踐才是最重要的。如果說(shuō)第一天是摸索,第二天是創(chuàng)業(yè),第三天是完善,第四天就是革命了!經(jīng)過(guò)我的不段努力,一個(gè)又一個(gè)的問(wèn)題在我的腦細(xì)胞下伏首稱臣,一個(gè)又一個(gè)枷鎖被我斬?cái)?,好象又獲得了另一片天地,感到神情氣爽,一坐又一坐高山被我征服,在歡慶勝利的喜悅的同時(shí),我看著下面依然在不懈的奮斗中的同胞姐妹們,心里叫一個(gè)著急啊!我知道今天的努力就是明天的成功。我是經(jīng)過(guò)自己的努力成功了,但在這可能是我終生難忘的,在這過(guò)程中我經(jīng)歷了風(fēng)風(fēng)雨雨,

17、經(jīng)過(guò)了酸甜苦辣。有時(shí)為了一個(gè)未完成的程序,我甚至廢寢忘食,在計(jì)算機(jī)樓整整呆了四五個(gè)小時(shí),忍著千般痛苦就是為了自己的理想。有時(shí)為了一個(gè)不懂的問(wèn)題,我?guī)缀醵继て嚼蠋熮k公室的門檻了,可能老師有點(diǎn)煩了,但就是那種求知欲趨使我不斷的去問(wèn)問(wèn)題。經(jīng)管是這樣,我還是有有些不懂,我還得經(jīng)常去請(qǐng)教同學(xué)。就這樣經(jīng)過(guò)兩周的時(shí)間我終于完成了自己的使命,真是感到高興啊!實(shí)訓(xùn)結(jié)束在即,但是學(xué)習(xí)的路途依然漫長(zhǎng),“活到老,學(xué)到老”,這句話一直都游蕩在我的腦海中。在現(xiàn)實(shí)社會(huì)中 知識(shí)是永無(wú)止境的,在知識(shí)中我們可以學(xué)習(xí)前人豐富的思想學(xué)識(shí),我們可以熏陶自己的靈魂,我們可以增進(jìn)自己的情感,我們可以了解到世界的寬廣和偉大。我們必須發(fā)揚(yáng)老一

18、輩無(wú)產(chǎn)階級(jí)革命分子的不怕苦不怕累不怕精神疲憊的大無(wú)畏精神,為了能夠畢業(yè),為了學(xué)分,我們必須努力。通過(guò)此次c語(yǔ)言程序設(shè)計(jì)實(shí)踐,本人實(shí)在是收獲很多!c語(yǔ)言是去年開的課程,所以這個(gè)學(xué)期并沒(méi)怎么看過(guò),當(dāng)要開始設(shè)計(jì)的時(shí)候,還真不知從哪下手!結(jié)果,第一次的上機(jī),我傻坐著不知道該做什么,后來(lái)只看了看別人怎么做而已?;厝ヒ院?我想,這樣不行,這樣下去還得了!我就重新復(fù)習(xí)了一遍我們上個(gè)學(xué)期學(xué)習(xí)的內(nèi)容,發(fā)覺(jué)自已有許多都遺忘了!特別是有文件的操作,幾乎是一遍空白!溫習(xí)過(guò)后,開始做題! 編程是一件很枯燥很無(wú)聊的事情,但是出于完成作業(yè),得到學(xué)分的壓力,還必須強(qiáng)破自己堅(jiān)持下去,按照老師所說(shuō)的模塊化思想,分部分的進(jìn)行編寫。而且編程是一件高精度、模范化的事情,稍有疏乎都會(huì)影響全局,也可能因?yàn)槟骋惶幍男〉腻e(cuò)誤而導(dǎo)致整個(gè)程序的無(wú)法運(yùn)行。皇天不負(fù)有心人,經(jīng)過(guò)四五天的編程

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論