《网络信息安全》课程设计报告Word下载.docx
- 文档编号:15053651
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:12
- 大小:638.01KB
《网络信息安全》课程设计报告Word下载.docx
《《网络信息安全》课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《《网络信息安全》课程设计报告Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
2.4.1程序输入……………………………………………………………11
2.4.2检验程序执行………………………………………………………12
第三部分课程设计体会
课程设计心得体会………………………………………………………………14
附录…………………………………………………………………………………15
1.1课程设计题目:
无密钥的置换加密软件开发
1.2成员分工:
xxx:
负责人员组织、总体设计、撰稿排版
软件测试分析、运行维护
负责本次课设概要分析、需求分析
负责源代码的编写、修改、调试
负责课程设计准备部分、设备支持
1.3课题背景及意义
当今世界正处于信息时代,网络信息安全已经成为我们网络应用过程中非常重要的一点,为了网络信息的安全,一般会采用各种各样的加密解密软件应对来自网络的威胁,通过各种安全协议软件能够最大可能得解决这些威胁,而为了了解加解密算法,我们应当首先了解古典加解密算法。
这次课设的目的就是开发一款无密钥置换加密软件,让更多的人了解加解密算法,以应对越来越多的网络安全威胁。
1.4实验平台介绍
VisualC++(简称VC)是Microsoft公司推出的目前使用极为广泛的基于Windows平台的C++可视化开发环境。
VC基于C,C++语言,主要由是MFC组成,是与系统联系非常紧密的编程工具,它兼有高级,和低级语言的双重性,功能强大,灵活,执行效率高,几乎可说VC在
Windows平台无所不能。
VC主要是针对Windows系统,适合一些系统级的开发,可以方便实现一些底层
的调用。
在VC里边嵌入汇编语言很简单。
当对系统性能要求很高的时候,可用VC开发。
VC在多线程、网络通信、分布应用方面,有着不可比拟的优势。
2.1课设软件需求分析
2.1.1设计目的
综合运用本课程及网络信息安全的相关知识设计并实现一个应用程序,能够实现无密钥置换加密,以VisualC++作为开发平台,通过实践复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,进一步掌握古典密码体制以及算法。
2.1.2设计要求
要求所设计开发的程序能够实现古典加密算法中无密钥置换加密,由用户输入要加密的明文序列,不需要输入密钥,然后输出加密后的密文序列,要求明文序列能够达到1000位。
2.2概要设计
根据对用户的要求及功能设置可以得到以下的流程图2-1
根据转换矩阵输出密文
根据置换算法转换矩阵
输入明文
分组排列
图2-1概要设计流程图
2.3源代码
#include<
iostream.h>
classSubKey
{//定义子密钥为一个类
public:
intkey[8][6];
}subkey[16];
//定义子密钥对象数组
classDES
{
intencipher_decipher;
//判断加密还是解密
intkey_in[8][8];
//用户原始输入的64位二进制数
intkey_out[8][7];
//除去每行的最后一位校验位
intc0_d0[8][7];
//存储经PC-1转换后的56位数据
intc0[4][7],d0[4][7];
//分别存储c0,d0
inttext[8][8];
//64位明文
inttext_ip[8][8];
//经IP转换过后的明文
intA[4][8],B[4][8];
//A,B分别存储经IP转换过后明文的两部分,便于交换
inttemp[8][6];
//存储经扩展置换后的48位二进制值
inttemp1[8][6];
//存储和子密钥异或后的结果
ints_result[8][4];
//存储经S变换后的32位值
inttext_p[8][4];
//经P置换后的32位结果
intsecret_ip[8][8];
//经逆IP转换后的密文
voidKey_Putting();
voidPC_1();
intfunction(int,int);
//异或
voidSubKey_Production();
voidIP_Convert();
voidf();
void_IP_Convert();
voidOut_secret();
};
voidDES:
:
Key_Putting()//得到密钥中对算法有用的56位
cout<
<
"
请输入64位的密钥(8行8列且每行都得有奇数个1):
\n"
;
for(inti=0;
i<
8;
i++)
for(intj=0;
j<
j++){
cin>
>
key_in[i][j];
if(j!
=7)key_out[i][j]=key_in[i][j];
}
PC_1()//PC-1置换函数
intpc_1[8][7]={//PC-1
};
inti,j;
for(i=0;
for(j=0;
7;
j++)
c0_d0[i][j]=key_out[(pc_1[i][j]-1)/8][(pc_1[i][j]-1)%8];
intDES:
function(inta,intb)//模拟二进制数的异或运算,a和b为整型的0和1,返回值为整型的0或1
if(a!
=b)return1;
elsereturn0;
SubKey_Production()//生成子密钥
intmove[16][2]={//循环左移的位数
1,1,2,1,
3,2,4,2,
5,2,6,2,
7,2,8,2,
9,1,10,2,
11,2,12,2,
13,2,14,2,
15,2,16,1
intpc_2[8][6]={//PC-2
14,17,11,24,1,5,
3,28,15,6,21,10,
23,19,12,4,26,8,
16,7,27,20,13,2,
41,52,31,37,47,55,
30,40,51,45,33,48,
44,49,39,56,34,53,
46,42,50,36,29,32
16;
i++)//生成子密钥
{
intj,k;
inta[2],b[2];
intbb[28],cc[28];
for(j=0;
4;
for(k=0;
k<
k++)
c0[j][k]=c0_d0[j][k];
for(j=4;
d0[j-4][k]=c0_d0[j][k];
j++)
k++){
bb[7*j+k]=c0[j][k];
cc[7*j+k]=d0[j][k];
}
for(j=0;
move[i][1];
a[j]=bb[j];
b[j]=cc[j];
28-move[i][1];
bb[j]=bb[j+1];
cc[j]=cc[j+1];
bb[27-j]=a[j];
cc[27-j]=b[j];
28;
c0[j/7][j%7]=bb[j];
d0[j/7][j%7]=cc[j];
j++)//L123--L128是把c0,d0合并成c0_d0
for(k=0;
c0_d0[j][k]=c0[j][k];
for(j=4;
for(k=0;
c0_d0[j][k]=d0[j-4][k];
j++)//对Ci,Di进行PC-2置换
6;
subkey[i].key[j][k]=c0_d0[(pc_2[j][k]-1)/7][(pc_2[j][k]-1)%7];
IP_Convert()
intIP[8][8]={//初始置换IP矩阵
58,50,42,34,26,18,10,2,
60,52,44,36,28,20,12,4,
62,54,46,38,30,22,14,6,
64,56,48,40,32,24,16,8,
57,49,41,33,25,17,9,1,
59,51,43,35,27,19,11,3,
61,53,45,37,29,21,13,5,
63,55,47,39,31,23,15,7
你好,你要加密还是解密?
加密请按1号键(输入1),解密请按2号键,并确定."
'
\n'
encipher_decipher;
char*s;
if(encipher_decipher==1)s="
明文"
elses="
密文"
请输入64位"
s<
(二进制):
for(i=0;
text[i][j];
i++)//进行IP变换
text_ip[i][j]=text[(IP[i][j]-1)/8][(IP[i][j]-1)%8];
2.4调试分析过程描述
2.4.1程序输入
图2-2程序输入
(一)
图2-3程序输入
(二)
图2-4程序输入(三)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络信息安全 网络 信息 安全 课程设计 报告