《《C語言課程設(shè)計》課程設(shè)計數(shù)據(jù)的加密與解密》由會員分享,可在線閱讀,更多相關(guān)《《C語言課程設(shè)計》課程設(shè)計數(shù)據(jù)的加密與解密(15頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、
《C語言課程設(shè)計》
課程設(shè)計報告
題 目
數(shù)據(jù)的加密與解密
學(xué) 號
*********
姓 名
***
年級專業(yè)
2010級通信工程
指導(dǎo)教師
完成日期
2011
年
6
月
17
日
安徽師范大學(xué)物理與電子信息學(xué)院
College of Physics and Electronic Information, Anhui Normal University
目錄
目錄…………………………………………………………………………1
課程設(shè)計任務(wù)書…………………………………………………
2、…………2
摘要…………………………………………………………………………3
關(guān)鍵詞………………………………………………………………………3
原理…………………………………………………………………………3
1. 系統(tǒng)功能分析……………………………………………………………4
1.1 設(shè)計目的…………………………………………………………………4
1.2 功能描述…………………………………………………………………4
2. C語言程序編寫…………………………………………………………5
2.1程序結(jié)構(gòu)圖…………………………………………………………5
2.2程序流程圖…………………………
3、………………………………5
2.3 具體程序源代碼……………………………………………………8
3. C語言程序功能示例……………………………………………………11
4. 設(shè)計總結(jié)…………………………………………………………………12
5. 參考文獻(xiàn)…………………………………………………………………13
《C語言程序》課程設(shè)計任務(wù)書
題
目
數(shù)據(jù)的加密與解密
設(shè)
計
目
的
將某一已知文件的內(nèi)容(僅限于英文字母)以字符形式讀出,根據(jù)密鑰(用戶從鍵盤輸入)將對應(yīng)字符進(jìn)行移位操作即可,解密時移動相反。
例如:加密:設(shè)原文為abc
4、def,密鑰為5,則有abcdef每個字母按字母表向后移動5位(注:z后接a)可得到密文(亂碼)fghijkl;對該文件解密:文件內(nèi)容為fghijk1,密鑰為5,則有fghijk1每個字母向前移動5位(注a后接z),可得到原文abcdef。
設(shè)
計
進(jìn)
度
安
排
第一階段:選擇課程設(shè)計的題目
第二階段:搜尋有關(guān)課程設(shè)計的資料,查閱相關(guān)的書籍
第三階段:開始編冉C語言程序
第四階段:完成了C訓(xùn)言程序的編寫,開始撰寫C語言菾程設(shè)計報告
第五階段:完成了C語言課程設(shè)計報告的撰寫
教師審核
簽名
摘要
隨著現(xiàn)代化
5、的發(fā)展,人們的數(shù)據(jù)需要更笀便、安全和可靠的加密管理模式。設(shè)計一個基于C語言的數(shù)據(jù)加密及解密軟件,可以方便對數(shù)據(jù)的加密與解密。本設(shè)計實(shí)現(xiàn)了數(shù)據(jù)的加密及?密,運(yùn)行軟件之后只需輸入英文句子倎,再輸入換位位數(shù)(密鑰),即可輸出密文,也即對該數(shù)據(jù)進(jìn)行加密;輸入密文后再輸入換位位數(shù)則可輸出明文,即解密操作。朄設(shè)計的加密?解密系統(tǒng),運(yùn)用了C語言程序設(shè)計的知識,具有對英文文本加密和解密的功能,并在此基礎(chǔ)上可進(jìn)行對文件的操作。
關(guān)鍵詞
C語言;
程序設(shè)計;
換位法
換位位數(shù)
數(shù)據(jù)加密與解密;
原理
輸入方向
輸出方向
c
a
n
y
o
u
c
o
6、m
e
h
e
r
e
a
b
換位法加密示意
換位法加密的原理是將英文句子中的空格去除,然后將句子排成若干行,每行的字符數(shù)為換位位數(shù),再按列輸出即為密文,不足部分填入隨機(jī)字母。例如英文Can you come here若換位位數(shù)取4,則密文為comraueenchayoeb,如右圖所示。
一、系統(tǒng)功能分析
1.1設(shè)計目的
本課程設(shè)計的目的是為了保證個人數(shù)據(jù)資料不被他人非法竊取使用,保護(hù)個人的隱私及重要文件!
1.2功能描述
本程序主要是對已知文件(為英文字符)通過一定的算法將其轉(zhuǎn)換成非本身的其他英文字母以達(dá)到文件加密的目的。整個系統(tǒng)由以下幾
7、大功能模塊組成。
1.2.1主控選擇模塊
此模塊是主程序操作界面,供用戶進(jìn)行選擇。用戶可選擇執(zhí)行加密或解密操作。
1.2.2加密模塊
加密模塊主要是完成對文件的加密操作。從外部文件中讀入任意一個文件并將它加密并顯示出來!
1.2.3解密模塊
解密模塊是完成對文件的解密工作,將密文轉(zhuǎn)換為可被識別的明文。從外部文件中讀入任意一個文件并將它解密并顯示出來!
本綜合訓(xùn)練是計算機(jī)科學(xué)與技術(shù)、信息管理與信息系統(tǒng)、軟件工程專業(yè)重要的實(shí)踐性環(huán)節(jié)之一,是在學(xué)生學(xué)習(xí)完《C語言程序設(shè)計》 《數(shù)據(jù)結(jié)構(gòu)》課程后進(jìn)行的一次全面的綜合練習(xí)。本課綜合訓(xùn)練的目的和任務(wù):
1. 鞏固和加深學(xué)生對C語言
8、、數(shù)據(jù)結(jié)構(gòu)課程的基本知識的理解和掌握;
2. 掌握C語言編程和程序調(diào)試的基本技能;
3. 利用C語言進(jìn)行基本的軟件設(shè)計;
4. 掌握書寫程序設(shè)計說明文檔的能力;
5. 提高運(yùn)用C語言、數(shù)據(jù)結(jié)構(gòu)解決實(shí)際問題的能力。
二、C語言源程序編寫:
2.1程序結(jié)構(gòu)圖:
主 函 數(shù)
返回
調(diào)用
char *encode (char *dest,char *s1,int key)
char *decode(char *dest,char *str,int key)
2.2程序流程圖
int main()
#includ
9、e
#include
#include
#define CODELEN 256
開始
判斷字符串str中的空格和字符串結(jié)尾
gets(str)
char s1[CODELEN]
char str[CODELEN]
char xstr[CODELEN]
if(s1[0]>=A&&s1[0]<=Z)
s1[0]=s1[0]+32
去除空格,str變成s1
函數(shù)調(diào)用
if(decode(s1,xstr,key)!=NU
10、LL)
scanf("%d",&key);即加密字節(jié)數(shù)
函數(shù)調(diào)用encode(xstr,s1,key);
函數(shù)定義
char*decode(char *dest,char *str,int key)
函數(shù)定義
char*encode(char *dest,char *s1,int key)
int i,j,len,n=0;
len=strlen(str);
int i,j,len,len2,n=0;計算字符串s1的長度
len=strlen(s1);
if((len% key)!=0
if((len % key)!=0) le
11、n2=len+key-(len % key);
else len2=len;
return NULL;
len2=len;
for(i=0;i
12、
return dest
顯示
結(jié)果
結(jié)束
2.3、具體程序源代碼如下:
#include
#include
#include
#define CODELEN 256
char *encode(char *dest,char *s1,int key)
{
int i,j,len,len2,n=0;
len=strlen(s1);
if((len % key)!=0)
len2=len+key-(len
13、% key);
else
len2=len;
(timesrand(NULL));
for(i=len;i
14、 return dest;
}
char *decode(char *dest,char *str,int key)
{
int i,j,len,n=0;
len=strlen(str);
if((len % key)!=0)
return NULL;
len=(len / key);
for(i=0;i
15、st;
}
int main()
{
int key,i,j,len;
char s1[CODELEN];
char str[CODELEN];
char xstr[CODELEN];
printf("Please enter a string:");
gets(str);
{
int m=0,i=0,t;
char ch;
t=strlen(str);
for(i=0;i
16、[m]=ch;
if(s1[0]>=A&&s1[0]<=Z)
s1[0]=s1[0]+32;}
puts(s1);
printf("Please enter a digit:");
scanf("%d",&key);
encode(xstr,s1,key);
printf(“The mi wen is:”);
printf("%s\n",xstr);
if(decode(s1,xstr,key)!=NULL)
{;}
else
{
printf("NUL
17、L");}
{
int a;
char s2[CODELEN];
printf("Please enter again a digit:");
scanf("%d",&a);
getchar();
printf("Please enter again a string:");
gets(s2);
if(a==key&&s2[0]==s1[0])
{
printf(“The ming wen is:”);
puts(str);
}
printf(“****”);
printf(“****”);
}
}
三、C語言程序功能示例:
操作過程中的截圖:
18、
測試數(shù)據(jù):
Please enter a string:Nice to meet you
Please enter a digit:4;
The mi wen is:nteuiotacmyfeeok
Please enter again a digit:4
Please enter again a string: Nice to meet you
********
Ple
19、ase enter a string:Well down boby
Please enter a digit:4;
The mi wen is:wdbeoolwblny
Please enter again a digit:4
Please enter again a string: Well down boby
********
四、設(shè)計總結(jié)
通過這次課程設(shè)計,我學(xué)到了許多東西,在完成設(shè)計的過程中也遇到了許多的問題,通過不斷的查資料,和向老師同學(xué)的請教,使得大部分問題得到
20、了解決。并且解決問題的過程中我也學(xué)到了很多東西。
在設(shè)計過程中,主要遇到的問題就是文件的操作問題,以前學(xué)習(xí)的時候,對文件的操作掌握的不是很好,但在做課程設(shè)計時會常常用到,經(jīng)認(rèn)真看書后解決了這個問題。還有就是對讀取文本文件中的內(nèi)容不停止(一直讀下去)的問題。首先是密碼的存儲識別,后用fgetc(fp))!=EOF函數(shù)解決,使得讀函數(shù)不會無限讀下去,讀完后停止并還回文本內(nèi)容;其次是密碼太多時會出現(xiàn)亂碼的問題,后用while()函數(shù)解決。
雖然在課程設(shè)計過程中修改了很多次,但程序還是很不完美,有一些問題未能解決。比如說程序的界面不夠美觀,不夠人性化;在對密碼的處理上也不甚太好,可能存在安全隱患。
21、我將在以后的時間里繼續(xù)努力,不斷充實(shí)自己。
附軟件說明:
本程序采用宏定義方式定義字符串的大小,增加了程序的通用性,
本程序基本實(shí)現(xiàn)了要求的內(nèi)容:1.采用換位法進(jìn)行加密和解密;
2.輸入英文句子后,再輸入換位位數(shù)(密鑰),即可輸出密文;
3.輸入密文后再輸入換位位數(shù)則可輸出明文;
數(shù)據(jù)的加密與解密的使用方法:
1.加密使用方法: 首先輸入一個加密字符串(即明文),然后再輸入加密字?jǐn)?shù)(即密鑰),即可顯示結(jié)果(密文)。
2.解密使用方法: 首先輸入解密字節(jié)數(shù)(密鑰),然后再輸入密文,即可顯示結(jié)果(即明文)。
五、參考文獻(xiàn)
1. 譚浩強(qiáng)
22、C語言程序設(shè)計(第二版).高等教育出版社,2002
2. 黃維通 C語言程序設(shè)計 清華大學(xué)出版社
3. 徐士良等. C語言常用算法程序集 清華大學(xué)出版社
4. 馬靖善等. C語言程序設(shè)計.清華大學(xué)出版社,2005
5. 張毅坤等. C語言程序設(shè)計教程[M] .西安交通大學(xué)出版社,2003
物理與電子信息學(xué)院課程設(shè)計評定意見
指導(dǎo)教師評語
主要內(nèi)容包括:設(shè)計報告內(nèi)容的完整性和完成情況、報告格式的規(guī)范性、通過課程設(shè)計取得的收獲等。
成績: 簽名: 年 月 日
注:本頁與上一頁用A3紙?zhí)子〕煞饷婧头獾祝n程設(shè)計報告正文用A4紙打印然后裝訂