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