版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
11-數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書學(xué)院名稱:數(shù)學(xué)與計(jì)算機(jī)學(xué)院課程代碼:_________________專業(yè):年級:一、設(shè)計(jì)題目:電文的加密問題二、主要內(nèi)容電文(字符串)加密,形成密碼文(字符串)的問題。假定原文為C1C2C3……Cn,加密后產(chǎn)生的密文為S1S2S3……Sn。首先讀入一個(gè)正整數(shù)Key(大于1)作為加密鑰匙并將密文字符位置按順時(shí)針方向連成一個(gè)環(huán)(雙向循環(huán)鏈表)。加密時(shí)從S1位置起順時(shí)針方向計(jì)數(shù),當(dāng)數(shù)到第Key個(gè)字符位置時(shí)將原文中的字符C1放入該密文字符位置,同時(shí)從環(huán)中除去該字符位置。接著,從環(huán)中下一個(gè)字符位置起繼續(xù)計(jì)數(shù),當(dāng)再次數(shù)到第Key個(gè)字符位置時(shí),將原文中的C2放入其中同時(shí)除去此位置……,類推,直至n個(gè)原文字符全部放入密文環(huán)中。由些產(chǎn)生的S1S2S3……Sn即為原文的密文。三、具體要求及提交的材料1.做好設(shè)計(jì)計(jì)劃,認(rèn)真查閱相關(guān)資料,完成程序設(shè)計(jì)及調(diào)試;2.按《課程設(shè)計(jì)說明書_實(shí)例模板》完成課程設(shè)計(jì)說明書的撰寫;3.設(shè)計(jì)結(jié)束后,必須上交如下材料:(1)《課程設(shè)計(jì)說明書(報(bào)告)》打印稿一份;(2)課程設(shè)計(jì)說明書及源代碼電子文檔四、主要技術(shù)路線提示認(rèn)真分析系統(tǒng)功能需求,擬定設(shè)計(jì)方案和程序框架,查閱相關(guān)資料,完成算法設(shè)計(jì)和程序調(diào)試。五、進(jìn)度安排共計(jì)兩周時(shí)間,建議進(jìn)度安排如下:選題,應(yīng)該在上機(jī)實(shí)驗(yàn)之前完成需求分析、方案擬定、程序框架思考可分配4學(xué)時(shí)詳細(xì)的程序設(shè)計(jì)可分配8學(xué)時(shí)調(diào)試和分析可分配8學(xué)時(shí)??梢杂?學(xué)時(shí)的機(jī)動(dòng),即提前完成設(shè)計(jì)任務(wù)的學(xué)生可提前安排程序驗(yàn)收和答辯六、推薦參考資料馮博琴等編著,《軟件技術(shù)基礎(chǔ)》(修改版),西安交通大學(xué)出版社,1997嚴(yán)蔚敏等著,《數(shù)據(jù)結(jié)構(gòu)》,清華大學(xué)出版社,2003李蕓芳等著,《軟件技術(shù)基礎(chǔ)》(第二版),清華大學(xué)出版社,2000徐孝凱等著,《數(shù)據(jù)結(jié)構(gòu)(C語言描述)》,清華大學(xué)出版社,2004指導(dǎo)教師簽名日期年月日系主任審核日期年月日目錄摘要………………11引言……………22設(shè)計(jì)方案………………………32.1整體方案設(shè)計(jì)………………32.2電文存儲(chǔ)……………………42.4.構(gòu)建雙向循環(huán)鏈表…………52.4電文轉(zhuǎn)換密文………………62.5主函數(shù)main…………………73程序演示………………………8總結(jié)………………10致謝………………11參考文獻(xiàn)…………12附錄………………131-摘要 學(xué)習(xí)C語言和數(shù)據(jù)結(jié)構(gòu)的知識,可以讓我們對程序設(shè)計(jì)語言的理解和運(yùn)用深刻化、時(shí)代化。課程設(shè)計(jì)是我們從理論走向?qū)嵺`的橋梁,是鍛煉我們運(yùn)用理論知識能力的良機(jī)。隨著計(jì)算機(jī)的普及,社會(huì)信息量的與日俱增,信息安全和個(gè)人隱私的注重受到越來越多的人的關(guān)注,其數(shù)量規(guī)模比以前任何時(shí)候都大,無論個(gè)人還是公司乃至整個(gè)國家信息安全都顯得越來越重要,一旦隱私泄露可能會(huì)造成不可估量的損失。如何使自己的信息更加安全方便快捷也成了人們追求的目標(biāo),并且急需這樣的軟件來完成更多的功能。針對平時(shí)信息處理的重要程度,該軟件主要是提供了電文加密的功能,將所發(fā)的信息轉(zhuǎn)換成密文,以確保其安全。關(guān)鍵詞:電文加密,信息安全,隱私
1引言1問題的提出以前的操作系統(tǒng)等系統(tǒng)軟件主要是由匯編語言編寫的(包括UNIX操作系統(tǒng)在內(nèi))。由于匯編語言依賴于計(jì)算機(jī)硬件,程序的可讀性和可移植性都比較差。為了提高可讀性和可移植性,最好改用高級語言,但一般高級語言難以實(shí)現(xiàn)匯編語言的某些功能(匯編語言可以直接對硬件進(jìn)行操作,例如,對內(nèi)存地址的操作、位操作等)。人們設(shè)想能否找到一種既具有一般高級語言特性,又具有低級語言特性的語言,集它們的優(yōu)點(diǎn)于一身。于是,C語言就在這種情況下應(yīng)運(yùn)而生了。C語言C語言既有高級語言的特點(diǎn),又具有匯編語言的特點(diǎn);既是一個(gè)成功的系統(tǒng)設(shè)計(jì)語言,有時(shí)一個(gè)使用的程序設(shè)計(jì)語言;既能用來編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序,又能用來編寫各種系統(tǒng)程序;是一種受歡迎、應(yīng)用廣泛的程序設(shè)計(jì)語言。C語言發(fā)展過程1973年,美國貝爾實(shí)驗(yàn)室的D.M.RITCHIE在B語言的基礎(chǔ)上最終設(shè)計(jì)出了一種新的語言,他取了BCPL的第二個(gè)字母作為這種語言的名字,這就是C語言。1977年DennisM.Ritchie發(fā)表了不依賴于具體機(jī)器系統(tǒng)的C語言編譯文本《可移植的C語言編譯程序》。1978年BrianW.Kernighian和DennisM.Ritchie出版了名著《TheCProgrammingLanguage》,從而使C語言成為目前世界上流行最廣泛的高級程序設(shè)計(jì)語言。 1.4任務(wù)與分析電文(字符串)加密,形成密碼文(字符串)的問題。假定原文為C1C2C3……Cn,加密后產(chǎn)生的密文為S1S2S3……Sn。首先讀入一個(gè)正整數(shù)Key(大于1)作為加密鑰匙并將密文字符位置按順時(shí)針方向連成一個(gè)環(huán)(雙向循環(huán)鏈表)。加密時(shí)從S1位置起順時(shí)針方向計(jì)數(shù),當(dāng)數(shù)到第Key個(gè)字符位置時(shí)將原文中的字符C1放入該密文字符位置,同時(shí)從環(huán)中除去該字符位置。接著,從環(huán)中下一個(gè)字符位置起繼續(xù)計(jì)數(shù),當(dāng)再次數(shù)到第Key個(gè)字符位置時(shí),將原文中的C2放入其中同時(shí)除去此位置……,類推,直至n個(gè)原文字符全部放入密文環(huán)中。由些產(chǎn)生的S1S2S3……Sn即為原文的密文。
2設(shè)計(jì)方案1整體設(shè)計(jì)方案此課題是研究電文加密的問題,將明文轉(zhuǎn)換成密文,以實(shí)現(xiàn)信息安全。為了直觀和方便,畫出流程圖如下圖1:電文加密電文加密請輸入電文關(guān)鍵字1關(guān)鍵字2關(guān)鍵字n````````````關(guān)鍵字3密文1密文3密文2`````````密文n圖1程序總的流程圖該流程圖很直觀的描述了整個(gè)程序運(yùn)行過程。2.2電文存儲(chǔ)用戶輸入的電文和轉(zhuǎn)換后的密文都需要存儲(chǔ);我們就要用相應(yīng)的程序去實(shí)現(xiàn)這個(gè)過程,這才是我們最后的目的。#include<stdio.h>#include<string.h>#include<malloc.h>//頭文件typedefstructnode{charch;structnode*forward;/*鏈接下一節(jié)點(diǎn)*/structnode*backward;/*鏈接前一節(jié)點(diǎn)*/}CODE;//定義雙鏈表,用于存儲(chǔ)密文charocode[256];intkey,num=0;printf("輸入原文字符串:");while(num<255&&(ocode[num++]=getchar())!='\n');ocode[(num==255)?num:num-1]='\0';//輸入電文ncode=(char*)malloc((length+1)*sizeof(char));for(i=0;i<length;i++){ncode[i]=loop[i].ch;ncode[length]='\0';returnncode;} //定義線性表,用于存儲(chǔ)電文2.3構(gòu)建雙向循環(huán)鏈表將密文字符位置按順時(shí)針方向連成一個(gè)環(huán),用雙向循環(huán)鏈表操作存儲(chǔ)。char*decode(char*ocode,intkey){char*ncode;intlength,count,i;CODE*loop,*p;length=strlen(ocode);loop=(CODE*)malloc(length*sizeof(CODE));//動(dòng)態(tài)分配密文環(huán)for(i=0;i<length-1;i++){loop[i].forward=&loop[i+1];loop[i].backward=&loop[i-1];}//構(gòu)建雙鏈表loop[0].backward=&loop[length-1];loop[0].forward=&loop[1];loop[length-1].forward=&loop[0];loop[length-1].backward=&loop[length-2]; //雙向循環(huán)鏈表 2.4電文轉(zhuǎn)換密文 for(p=loop,i=0;i<length;i++){for(count=1;count<key;count++)p=p->forward;//從loop[0]位置起順時(shí)針方向計(jì)數(shù),數(shù)到第Key個(gè)字符位置p->ch=*ocode++;//將原文中的字符C1放入該密文字符位置p->backward->forward=p->forward;p->forward->backward=p->backward;p=p->forward;//從環(huán)中除去該字符位置}//產(chǎn)生密文鏈表; 2.5主函數(shù)mainvoidmain(){charocode[256];intkey,num=0;printf("輸入電文字符串:");while(num<255&&(ocode[num++]=getchar())!='\n');ocode[(num==255)?num:num-1]='\0'; printf("\n");do{printf("輸入加密鑰匙Key(大于1整數(shù)):");scanf("%d",&key); }while(key<=1); printf("\n"); printf("電文:%s\n",ocode);printf("密文:%s\n",decode(ocode,key)); printf("\n");}3.程序演示:對于所有執(zhí)行過程,通過圖片最好說明問題了:程序開始如圖2所示:圖2輸入電文,如圖3所示:圖3按下回車鍵,接著輸入關(guān)鍵字,關(guān)鍵字要是大于1的整數(shù),輸入錯(cuò)誤會(huì)繼續(xù)提示輸入,如圖4所示:圖4輸入正確的關(guān)鍵字,假設(shè)輸入23,如圖5所示:圖5如上圖所示,電文為:Iloveyouforever密文為:oveoieuofryervl整個(gè)操作過程就是這樣,很簡單。結(jié)論經(jīng)過一個(gè)多星期的上機(jī)實(shí)踐學(xué)習(xí),不斷的編寫,修改,終于完成了這個(gè)電文加密課程設(shè)計(jì)。通過實(shí)踐,我也發(fā)現(xiàn)我的好多不足之處,對C語言學(xué)習(xí)平時(shí)只是馬馬虎虎的過去了,真正自己去解決實(shí)際問題的時(shí)候才會(huì)發(fā)現(xiàn)自己學(xué)的多么糟糕,通過課程設(shè)計(jì)對自己的編程能力也有所提高;還有對C語言中經(jīng)常出現(xiàn)的錯(cuò)誤也不了解,通過實(shí)踐,使我在這幾個(gè)方面的認(rèn)識有所提高。在這次課程設(shè)計(jì)中,我學(xué)會(huì)了很多東西,比如將學(xué)到的知識能綜合運(yùn)用到實(shí)踐中,通過查資料的學(xué)習(xí)懂得了很多以前不懂的知識,豐富了我的知識面,在能力上也有很大的提高。課程設(shè)計(jì)是一個(gè)既考驗(yàn)我們對知識掌握及運(yùn)用能力,又考驗(yàn)我們寫實(shí)驗(yàn)報(bào)告的邏輯組織能力。因此通過這次課程設(shè)計(jì)讓我受益匪淺。在完成這次課程設(shè)計(jì)的的過程中雖然遇到了些問題,但在老師和同學(xué)的幫助下最終完成了這次的任務(wù)。
致謝首先我要感謝老師的耐心指導(dǎo)和幫助,在他的督促下按時(shí)完成這個(gè)課程設(shè)計(jì),并且對于我們提出的各種問題都能依依完整而仔細(xì)的回答,直到我們完全明白為止。再者需要感謝的是教我們數(shù)據(jù)結(jié)構(gòu)的老師,沒有他們的教導(dǎo)就不會(huì)知道怎樣完成這個(gè)課程設(shè)計(jì),也不可能有基礎(chǔ)來完成此次的課程設(shè)計(jì)。整個(gè)完成的過程中周圍的同學(xué)也給了不少幫助,在此真的非常感謝每一位給過我?guī)椭娜?
參考文獻(xiàn)1.譚浩強(qiáng)等.C語言程序設(shè)計(jì)教程.高等教育出版社.20052.李建學(xué)等.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)案例精編(用C/C++描述).清華大學(xué)出版.20073.嚴(yán)蔚敏等.數(shù)據(jù)結(jié)構(gòu)(C語言版).清華大學(xué)出版社.20034.馮博琴等編著,《軟件技術(shù)基礎(chǔ)》(修改版),西安交通大學(xué)出版社,19975.李蕓芳等著,《軟件技術(shù)基礎(chǔ)》(第二版),清華大學(xué)出版社,20006.徐孝凱等著,《數(shù)據(jù)結(jié)構(gòu)(C語言描述)》,清華大學(xué)出版社,2004附錄#include<stdio.h>#include<string.h>#include<malloc.h>typedefstructnode{charch;structnode*forward;//鏈接下一節(jié)點(diǎn)structnode*backward;//鏈接前一節(jié)點(diǎn)}CODE;char*decode(char*ocode,intkey){char*ncode;intlength,count,i;CODE*loop,*p;length=strlen(ocode);loop=(CODE*)malloc(length*sizeof(CODE));//動(dòng)態(tài)分配密文環(huán)for(i=0;i<length-1;i++){loop[i].forward=&loop[i+1];loop[i].backward=&loop[i-1];//雙鏈表}loop[0].backward=&loop[length-1];loop[0].forward=&loop[1];loop[length-1].forward=&loop[0];//雙向循環(huán)鏈表loop[length-1].backward=&loop[length-2];for(p=loop,i=0;i<length;i++){/*產(chǎn)生密文鏈表*/for(count=1;count<key;count++)p=p->forward;//從loop[0]位置起順時(shí)針方向計(jì)數(shù),數(shù)到第Key個(gè)字符位置p->ch=*ocode++;//將原文中的字符C1放入該密文字符位置p->backward->forward=p->forward;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 華師大版初中科學(xué)課件
- 華師大版初中科學(xué)3.3 陽光的組成(14課件)
- 2023-2024學(xué)年浙江省寧波市余姚市子陵中學(xué)教育集團(tuán)子陵校區(qū)七年級(下)競賽數(shù)學(xué)試卷
- 上班遲到與曠工處理制度
- 邏輯代數(shù)基本公式及定律
- 2022年三年級語文下冊第八單元主題閱讀+答題技巧(含答案、解析)部編版
- 佛山市重點(diǎn)中學(xué)2024屆高三模擬考試(一)數(shù)學(xué)試題理試卷
- 算法設(shè)計(jì)與分析 課件 10.3.4-綜合應(yīng)用-最短路徑問題-弗洛伊德算法
- 2024年河北客運(yùn)資格專業(yè)能力考試題庫
- 2024年紅河客運(yùn)從業(yè)資格證考試答案
- 合理用藥健康教育教學(xué)課件
- 中醫(yī)教材(第五版)
- 比亞迪F0說明書
- 昌江縣古榕峰水泥用石灰?guī)r礦礦產(chǎn)資源開發(fā)利用與保護(hù)方案
- 核醫(yī)學(xué)主治醫(yī)師考試:核醫(yī)學(xué)專業(yè)知識真題模擬匯編(共569題)
- HCCDP 云遷移認(rèn)證理論題庫
- 醫(yī)用內(nèi)窺鏡冷光源產(chǎn)品技術(shù)要求深圳邁瑞
- 第二章區(qū)段站布置圖
- 建筑工程概預(yù)算知到章節(jié)答案智慧樹2023年浙江廣廈建設(shè)職業(yè)技術(shù)大學(xué)
- 直擊本質(zhì):洞察事物底層邏輯的思考方法
- 2023年中國電建西北院校園招聘筆試參考題庫附帶答案詳解
評論
0/150
提交評論