文件加密实验报告

文件加密实验报告
文件加密实验报告

C

实验名称:文件加密

院系:通信与信息工程学院

班级:通信工程1101班

成员:田轩铭(组长)、陈亮、张晨华、高梦、程腾日期:2012年6月25日—7月6日

设计题目:文件加密

一、本次课程设计的目的

通过对文件的加密保护用户的私人隐私,使学生能更好的掌握好高级语言程序,从而了解对程序设计的基本概念和方法,进而学会利用C++语言解决一般应用问题,并为后续的专业学习奠定基础。同时增强同学们之间的团队合作精神,使学生更好的融入社会,将来成为社会有用之才!

二、设计要求

1.要求打开一个源文件,按用户输入的密钥通过异或用算进行加密,加密后文件存入目标

文件中。

2.要求开始时进行程序使用的鉴权,验证密码。

3.可以对程序原密码进行修改,对密钥进行修改。

4.要求写出设计报告,报告中要求写出总体设计框架和详细程序分析。

5.5-6名学生为一组,选出组长共同完成。在报告中各同学要明确写出自己所做的工作,并由组长认可评定。

6.书写及设计方案均用A4纸打印以便统一装订成册,并且要求上交电子文本。

三、总体方案的设计及说明

文件加密主要可以分为两大部分:对文件的加密、解密程序和对改密码、改密钥程序。首先运行程序后会对用户进行一个鉴别,需要输入一个与程序事先设定好的密码才打开程序,输入错误次数最高为3次,此程序初始设定密码为123456,,所以输入超过6位的密码程序直接结束退出,输入单个字符字母和数字一样都可以最高输入3次错误,之后便系统自动退出,如输入2-6位字母则只可以输入2次错误系统自动退出,体现了其合理性对数字的高度识别性。

进入程序后该系统共有4个选项即:1.文件加密2.文件解密3.修改密码0.退出程序

用户可选择对应项进行使用及操作。并且进入系统后显示“Welcome”大字符,和相关设计者。进入程序可以对指定的文件进行加密和解密,对密钥进行修改,加密时密钥可由用户随机输入,方便记忆体现其人性化的设计,从而便于加密后记忆,针对了不同的使用人群。

文件的加密、解密程序部分由陈亮、田轩铭同学负责。改密码、改密钥程序部分的程序由张晨华、程腾同学负责。课程设计报告和资料查询由田轩铭、高梦同学负责。

四、程序流程图

五、程序运行结果

1.打开程序,输入密码进行鉴权

2.密码输入三次错误后

3.密码输入正确后,进入程序

4.对文件进行加密(可自行指定任意一个)

5.加密成功

加密后的文件不输入密钥打开则是乱码

原文件:

6.文件解密

解了密钥的文件打开如下

7.修改密码

输入错误2次后,最后一次输入正确并改密123678

六、个人收获和体会

田轩铭(组长) 1107020123

通过这次的作业我觉得最大的收获是不仅把平时学习到的知识理解的更加透彻,而且使知识更加系统化,同时还把有些平时不太注意的小问题发现了出来,这不但有利于我学习C 语言,而且对于我学习任何一门课程都是很有益处的。总之,做这份作业对于我们学习C 语言有很大的帮助。

在做课程设计时,由于运用了很多新知识,新的方法,还有题目更加复杂,应用性更强,在编写过程中遇到了很多困难,幸好我们有团结的集体,通过大家的努力、配合,我们将问题逐个解决,最终成功的完成了作业,由于担任组长,我的领导能力得到了锻炼,对c语言有了进一步理解,这对我们工科学生来说意义是相当重大的,在此感谢我组同学的支持和老师的帮助和指导。

经过这次的学习、设计,我们学到了许多以前不懂的、难懂的知识。这真是锻炼人的好机会,我很喜欢这种应用性的学习。我要感谢我的老师、我的伙伴,你们使我懂得了许多、许多。

陈亮1107020117

在这次和同组人一起设计程序过程中,我深刻体会到一个人的力量是渺小的,只有大家同心协力,才能完成好一项工作。在设计统计块时,开始遇到了不少困难。例如:文件加密异或是什么?又如:在写程序时,因为对数组,指针不熟悉,而出现了不少错误。经过学习,讨论,最后克服了这些困难。经过这次设计,我对数组,指针的知识和使用又上了一个台阶。数组和指针那么地方便,它真是C语言的重点,精华所在。所以,在以后的学习中,我更应抓紧对指针的学习。

张晨华1107020111

很高兴能有这样一个机会和同学一起完成一项任务,这其中有各种各样的问题,但通过大家一起讨论,并在老师的耐心辅导下,最终把那些问题都解决了。从中我学到了如何应对困难,如何与人合作。在最终完成作业的那一刻,我们心中都非常的高兴。

我想有了这样一次体验,在以后漫长的人生路上,我们在面对许多意想不到的困难与挫折时,我们会更从容的去面对。通过这次合作,我使自己的动手能力和与人沟通的能力得到了提高,这将使我在以后的的道路上走的更稳,收获更多。所以,我们应感谢老师的良苦用心。本来我还不太赞成这种做法,但现在,我知道了,这是对的,是值的我们用心去做的。

同时我也知道了我们随时都要培养自己的动手能力,只有这样,才能更好的适应这个日新月异的飞速发展的社会。

高梦1107020105

C语言的确不太容易学,后来学了几节课,觉得也没什么,就是要记的东西比较多,每天都有新内容,记一记就可以了,但当老师布置了几个小作业之后,问题就出现了,单独拿出来每个东西我都略知一二,而让我把它们连接起来,做一个程序,那就难了,每次都是老师写好我们抄,一两次之后,通过对比,我发现这些程序之间有好多东西,都是共同的,变化的指示针对不同问题的处理方法,当然这要通过数学运算来完成,困难之处就是怎样把一个个问题用数学的方法表示出来,怎样表示更简便而已,我的数学还可以,这对我来说不成问题,因此我的信心又恢复了。

程腾1107020129

虽然在工作中我们有分歧,有争吵但我们都很好的解决了问题,增进了友谊,锻炼了团结协作能力,受益匪浅。其中第一部分和第二部分有点难易失调,是我和组长共同完成,更

加体现出了分工和协作的优点和重要性。

我对自己在这份作业中的表现特别满意,提出了很多很好的建议,事实表明那些建议确实起到了很好的作用。也加深了我对”= =”和”if”等的理解和操作,从实践中了解和体会到了C++的魅力和作用,也让我体会到大学学的东西的重要性。

七、组长评语

这次的课程设计中,让我们收获了很多。

首先,很荣幸我能成为组长和我们组的同学一起做这次的实习课题,而我们组能在规定的时间内出色完成,是我们组所有人共同努力的结果。这次的课题,对我们来说确实难度非常大,对初学C语言的我们来说,最初的几次尝试,几乎就无法完成这个课题。后来,在老师对课题的简单讲解后,我们对课题有了更深的理解,同时也有了完成课题的信心。最后经过了不懈的努力,终于将这个程序完成。在这里要谢谢老师对我们的帮助,更感谢我们组的同学,没有你们的努力,我们跟本无法这么快将这个课题做完。我希望在今后的学习道路上,我们组还要继续发扬这种迎难而上精神,保持着对知识的渴望和追求,向着胜利的方向继续前进!

组长给小组成员打分表

源程序:

#include // 标准输入、输出函数

#include // 标准库函数

#include // 字符串处理函数

#include // 字符操作函数

/*/////////////////////////////////////////////////////////////

int getpassword(char password[]) //密码

{

FILE *fp;

char pwd[30];

if((fp=fopen("c:\\password.dat","w+"))==NULL)

{

printf("出错!程序退出\n");

}

else

{

fscanf(fp,"%s",pwd);

}

if(!strcmp(password,pwd))

return (1);

else return (0);

}*/

///////////////////////////////////////////////////////////////加密解密void fun(char *s_file,char *m,char *c_file)//加密解密

{

int i=0;

FILE *fp1,*fp2;

register char ch;

fp1=fopen(s_file,"rb");

fp2=fopen(c_file,"wb");

if(fp1==NULL)

{

printf("不能打开文件\n");

exit(1);

}

if(fp2==NULL)

{

printf("不能建立文件\n");

exit(1);

}

ch=fgetc(fp1);

while(!feof(fp1))

{

ch=ch^*(m);

fputc(ch,fp2);

ch=fgetc(fp1);

}

fclose(fp1);

fclose(fp2);

}

/*//////////////////////////////////////////////////更改密码

void passwordchange()

{

FILE *fp;

char pwd[30];

printf("请输入新密码:\n");

scanf("%s",pwd);

fp=fopen("C:\\password.dat","w");

fprintf(fp,"%s",pwd);

printf("密码修改成功\n");

fclose(fp);

}*/

///////////////////////////////////////打印欢迎界面

void pr()

{

printf("\n######################### 文本加密解密管理软件

####################################\n\n");

printf(" 文 ** ** ** \n");

printf(" 本 ** ** ** \n");

printf(" 加 1. 文件加密 ** * ** ** \n");

printf(" 密 2. 文件解密 ** * ** ***** ** ****

***** * * ***** \n");

printf(" 解 3. 更改密码 ** * ** ** ** ** **

** ** ** ** ** ** **\n");

printf(" 密 0. 退出系统 ** * * ** ******* ** **

** ** ** ** ** *******\n");

printf(" 系 *** *** ** ** ** ** ** ** ** ** ** \n");

printf(" 统 ** ** ***** ** **** ***** ** ** ** ***** \n");

printf("\n###############################################################

#########################\n");

printf("\n 请输入选项(0-3):\n");

printf("Design By: 西安科技大学通信工程1101班田轩铭、陈亮、张晨华、高

梦、程腾\n");

}

void main(int argc,char*argv[])

{ int k,trytimes=0,newpwd,pwd;

char sourcefile[30];

char codefile[30];

char m[10],ch;

int password=123456,flag=1;

int j,q;

printf("如需打开程序需验证您的权限!!!\n");// 鉴权作用,判断是不是本程序或

电脑安装程序的使用者

for(trytimes=1,pwd=0;password!=pwd&&trytimes<3;trytimes++)

{

printf("您还有%d次输入密码的机会,请输入6位数字密码:

\n",4-trytimes);//本程序密码设置为6位阿拉伯数字,如输入超过6位系统直接退

scanf("%d",&pwd);

getchar(ch);

flag=0;

if(pwd==password) flag=1;

}

if(flag!=1)

{printf("您已三次输入错误密码,请查证后再打开程序!\n");//进入此程序

共有三次输入密码机会,输入错误则系统自动退出

exit(1);

}

loop:system("pause");

system("cls");

pr();

scanf("%d",&k);

system("pause");

system("cls");

switch(k)

{

case(0):{exit(0);break;}

case(1):

{if(argc!=4)

{ printf("请输入要加密的文件名:\n");//用户给需要加密的文件加密

scanf("%s",sourcefile);

printf("请输入密钥:\n");//密钥是用户自己定义的,可以随意给需要加密的文件添加密钥

scanf("%s",m);

printf("请输入要保存的文件名:\n");//给加密后的文件命名,并保存

scanf("%s",codefile);

fun(sourcefile,m,codefile);

}

else

{

strcpy(sourcefile,argv[1]);

strcpy(m,argv[2]);

strcpy(codefile,argv[3]);

fun(sourcefile,m,codefile);

}

system("cls");

printf("文件已成功加密,正在保存,请稍后!!!");

}

break;

case(2):

{

if(argc!=4)

{printf("请输入要解密的文件名:\n");//用户给需要解密的文件解密

scanf("%s",sourcefile);

printf("请输入密钥!\n");//需要输入用户之前设定的密钥对加密的文件进行解密

scanf("%s",m);

printf("请输入要保存的文件名:\n");//对解密的文件系统又可以提供保存路径

scanf("%s",codefile);

fun(sourcefile,m,codefile);

}

else

{

strcpy(sourcefile,argv[1]);

strcpy(m,argv[2]);

strcpy(codefile,argv[3]);

fun(sourcefile,m,codefile);

}

system("cls");

printf("文件已成功解密,正在保存,请稍后!!!");

} break;

case(3):

{ for(pwd=0,flag=1,trytimes=0;password!=pwd&&trytimes<3;trytimes++) {

printf("您还有%d次输入原密码的机会,请输入原密码:\n",4-trytimes);//修改该程序原密码,如原密码输入错误次数超过限定则程序自动退出

scanf("%d",&pwd);

flag=0;

if(password==pwd)

flag=1;

}

if(flag)

{

printf("请输入新密码:");//保存修改后的新密码

scanf("%d",&newpwd);

password=newpwd;

} else

{

printf("您已三次输入错误密码,请查证后再打开程序!");

exit(1);

}

} break;

default:

printf("请输入正确的选择!");//如输入不是系统所设序号,系统会提示此项}

for(q=0;q<270000000;q++)

;

system("cls");

printf("接下来您想干什么:\n");

printf("1:返回至初始步\n");

printf("2:立刻关闭程序\n");

scanf("%d",&j);

if(j==1)

goto loop;

else

{ if(j==2)

exit(1);

else printf("请输入正确的选择!");//如输入不是系统所设序号,系统会提示

此项

}

}

参考资料

《C程序设计(第二版)》谭浩强清华大学出版社

《C语言程序设计》田祥松西安电子科技大学出版社《C语言课程设计》黄明等电子工业出版社

《C语言编程之道》刘彬彬等人民邮电出版社

《C语言程序设计现代方法》【美】 K.N.King 著吕秀峰译人民邮电出版社

《C语言经典范例50讲》任志宏程超北京希望电子出版社

古典密码学实验

一、实验背景与目的 通过实现简单的古典密码算法,理解密码学的相关概念如明文(plaintext)、密文(ciphertext)、加密密钥(encryption key)、解密密钥(decryption key)、加密算法(encryption algorithm)、解密算法(decryption algorithm)等。 二、实验环境 Visual C++6.0 三、实验内容 (1)用C\C++语言实现仿射变换(Affine)加/解密算法;2) (2)用C\C++语言实现统计26个英文字母出现的频率的程序; (3)利用仿射变换加/解密程序对一段较长的英文文章进行加密,再利用统计 软件对明文和密文中字母出现的频率进行统计并作对比,观察有什么规 律。 其中a, b为密钥, 25 , 0≤ ≤b a ,且gcd(a, 26)=1 实验要求:加/解密程序对任意满足条件的a、b都能够处理。仿射变换: 加密: ()26 mod , b am m E c b a + = = 解密: ()()26 mod 1 , b c a c D m b a - = =- 四、实验原理 一个仿射变换对应于一个矩阵和一个向量的乘法,而仿射变换的复合对应于普通的矩阵乘法,只要加入一个额外的行到矩阵的底下,这一行全部是0除了最右边是一个1,而列向量的底下要加上一个1。仿射变换原理在基于MQ问题的多变元公钥密码中,公钥一般是方程组,但是这种没有处理的方程组很容易受到插值法的攻击,例如:首先在q元有限域上选取个变量以及个变量。构造方程组:这里面公钥信息方程组就是:其中是明文信息,而则是密文。可以看出这样的公钥信息很容易受到插值法的攻击,下面使用仿射将

信息安全加密实验报告

重庆交通大学实验报告 班级:计信专业2012级2班 学号: 631206060232 姓名:娄丽梅 实验项目名称:DES加解密程序设计与实现 实验项目性质:设计性(验证性) 实验所属课程:信息安全 实验室(中心):软件实验室 指导教师:米波 实验完成时间: 2014 年12月11日

一、实验目的 1、理解DES加密与解密的程序设计算法思想。 2、编写DES加密与解密程序,实现对明文的加密与解密,加深对数据加密与解密的理解,掌握DES加密算法思想,提高网络安全的编程能力。 二、实验主要内容及原理 (一)实验内容 1、掌握DES算法; 2、编写DES算法。 (二)实验原理 1、初始置换 初始置换在第一轮运算之前执行,对输入分组实施如下表所示的变换。此表应从左向右、从上向下读。在将这64位数据分为左右两部分,每部分分别为32位,将左32位留下,将右32位按照下表进行排列 2、密钥置换 一开始,由于不考虑每个字节的第8位,DES的密钥由64位减至56位。每个字节第8位可作为奇偶校验位以确保密钥不发生错误。接着,56位密钥被分成两部分,每部分28位。然后,根据轮数,这两部分分别循环左移l位或2位。在DES的每一轮中,从56位密钥选出48位子密钥(Sub Key)。 3、S盒置换 当产生了48位密钥后就可以和右边32位明文进行异或运算了,得到48位的密文。 再经过下论的S盒跌带,其功能是把6bit数据变为4bit数据,每个S盒是一个4行、16列的表。盒中的每一项都是一个4位的数。S盒的6个位输入确定了其对应的输出在哪一行哪一列。 4、P盒置换 S盒代替运算后的32位输出依照P盒进行置换。该置换把每输入位映射到输出位,任意一位不能被映射两次,也不能被略去,这个置换叫做直接置换。 5、再次异或运算 最后,将P盒置换的结果与最初的64位分组的左半部分异或,然后左、右半部分交换,接着开始另一轮。 6、当进行到16轮后,最终进行一次末置换,形成密文

文件加密与解密实验报告

HUNAN UNIVERSITY 程序设计训练——文件加密与解密 报告 学生姓名X X X 学生学号20110102308 专业班级建环308 指导老师何英 2012-07-01至 2012-07-13

一、程序设计目的和要求 (3) 二、程序设计内容 (4) 1、总体设计 (4) 1.1主控选择模块 (4) 1.2加密模块 (4) 1.3解密模块 (4) 2、流程图 (5) 三模块详细说明 (6) 四、测试数据及其结果 (7) 五、课程设计总结 (8) 六、附录 (9) 附录1:参考文献 (9) 附录2:程序源代码 (9)

一、程序设计目的和要求 1、目的:为保证个人数据资料不被他人窃取使用,保护个人隐私及个人文件。设计一个基于c语言的文本文件加密及解密软件,可以方便对文本文件的加密与解密。本设计实现了文本文件的解密及解密,运行软件之后只需输入任意一个文本文件的文件名及后缀名即可对该文本文件进行加密或解密操作。本设计的加密与解密系统,使用了面向各类文件的方法,运用Microsoft Visual C++ 6.0实现具有加密、解密、帮助信息、读取文本文件、显示结果、退出等功能的文件加密与解密系统。 2、要求: (1)从键盘输入要进行加密的一行字符串或者需要加密的文件名。 (2)显示菜单: (3)选择菜单,进行相应的操作。加密方法是设置一加密字符串以及对文件的哪些部分进行加密;加密是将原始文件加密并保存到文件中;解密是将加了密的文件还原并保存到文件中,同时应比较与原始文件的一致性; 3、其他要求 (1)变量、函数命名符合规范。 (2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。

计算机网络信息安全中数据加密技术的分析

计算机网络信息安全中数据加密技术的分析 发表时间:2018-10-10T10:02:54.457Z 来源:《建筑模拟》2018年第20期作者:葛晴 [导读] 随着科学技术的不断发展,计算机逐渐被应用于各个领域,为各行各业的进一步发展奠定了基础。 葛晴 中国汽车工业工程有限公司天津市 300113 摘要:随着科学技术的不断发展,计算机逐渐被应用于各个领域,为各行各业的进一步发展奠定了基础。信息化社会需要更加便捷的信息资源交流传递方式,而计算机信息安全也在一次次的冲击中得到了创新与发展。数据加密技术的开发为新时代计算机信息网络安全提供了保障,也为祖国的社会主义现代化建设做出了卓越的贡献。本文对数据加密技术在计算机信息安全中的应用进行了分析,希望对计算机信息安全的落实有所助益。 关键词:计算机网络;信息安全;数据加密技术 引言 社会科学技术不断发展,计算机信息技术和互联网技术的出现改变了人们的生活方式,但是网络时代在给人们带来便利的同时也会带来一定的风险,比如说个人和集体的计算机设备很容易受到网络病毒甚至是黑客的入侵,影响计算机内部数据和信息的安全性,也会给社会发展带来不可预计的负面影响,因此计算机网络信息数据加密技术的研究工作具有重要的现实意义。 1 计算机网络信息安全中数据加密技术的重要性 我国互联网信息技术不断发展,市场中的互联网企业变得越来越多,同时也会存在一些网络安全隐患问题,比如说黑客攻击或者是网络漏洞等,这些问题的出现影响了企业信息数据的安全性,因此加强计算机网络数据的加密技术非常重要。科技改变了生活,人们在工作和生活中都越来越依赖于网络,尤其是电子商务领域,更是需要计算机网络来传输大量的数据。比如,人们在使用网络购买商品时,需要买家通过网络来查看想要购买的物品信息,然后与卖家联系之后下单完成商品购买。购买的过程中需要使用支付宝进行网络支付,如果在付款过程中发生支付密码泄漏的情况,会对用户的财产造成很大的威胁。还有一部分社会企业在传输重要的企业文件时,也需要使用数据信息加密技术,能够有效防止重要文件被他人窃取。在计算机安全体系当中最重要的就是密码,如果发生密码泄露问题会导致计算机个人信息面临被入侵的威胁,人们在使用电脑登录个人信息时,如果密码泄露,那么黑客就能够使用密码登录电脑,破坏用户的服务器,很多用户会在再次登录时出现提醒登录异常的信息。因此为了能够保障信息的安全性,需要应用数据加密技术来提升计算机的安全防护能力。 2 计算机的安全问题 2.1 人为的因素 人为的因素主要是计算机网络安全的防范技术和安全管理不完善,安全管理措施也不完善。网络内部人员安全意识非常差,导致了文件的以及数据的泄密。人为侵入检测技术原本是为了保证现在的计算机的安全而设计产生的技术,但是现在由于技术的进步也有许多人通过此类技术对计算机进行侵入以及破坏。而且现在随着计算机的发展,攻击计算机网络的方法也越来越多,并且更加容易。用来攻击计算机网络的技术工具也逐渐增强,而现在的黑客也越来越多,所以导致我们计算机网络的数据安全也受到了威胁。 2.2 计算机病毒的不断增加,传播的速度也非常的迅速 计算机病毒可以分为操作时病毒、外壳型病毒,以及源码型病毒。而新型网络病毒会伴随着信息网络硬件设备的不断提升以及计算机的网络快速的传播。因为计算机网络的系统体系很大所以使得这些病毒相互传播,导致计算机的危害,从而也导致了网络信息的数据泄露或错乱等。 3 计算机网络信息安全中数据加密技术 3.1 链路数据加密技术的应用 在各种计算机数据加密技术中,链路数据加密技术能够有效地划分网络数据信息的传输路线,对不同传输区间的数据信息进行加密,大大提高了信息传输过程中的安全性。即使传输信息遭到非法窃取,也无法被即时解密。应用链路数据加密技术,数据传输中的加密过程不再只是简单的函数运算,针对不同传输区域的数据改变长度,有效地解决了数据窃取问题,窃取人员面对极其复杂的数据加密模式往往难以及时进行数据破译,使计算机网络工程的安全性得到了很大的提升。 3.2 节点加密技术 节点加密技术具体是指在信息传递链接节点位置对信息进行加密处理,以便对传递过程中的信息加以保护。利用节点加密技术要注意加密过后的数据在经过通信节点时同样不能以明文的形式出现,还是照旧以密文的形式来传递。在通信节点存在一个安全模块,安全模块和节点机器连接在一起,在整个通信过程中发挥信息保障的重要作用,数据加密和解码不是在节点同步进行的,而是在这个节点连接的安全模块中实施。 3.3 端端数据加密技术的应用 区别于链路数据加密技术,端端数据加密技术的应用过程十分简单。以专业密文作为信息传输基础,在应用时不必对信息数据进行不断地加密与解密过程,进一步提升了计算机信息安全性。无需大量成本维护的端端数据加密技术为计算机信息处理提供了全新的创新途径,也为社会的发展提供了保障。具备独立传输路线的加密方式不会受到其它线路的干扰,在出现意外情况时仍然可以继续运行,为计算机网络故障维修降低了成本。 3.4 数字签名信息认证技术的应用 随着科学技术的发展,数字签名信息认证技术在不断变化的网络环境中逐渐受到了广大人民群众的喜爱,应用范围也随之扩大。数字签名信息技术可以对用户的身份信息进行鉴别,杜绝用户信息被非法利用的情况发生,进一步保障了人民群众的合法权益。应用口令认证方式可以实现简单快捷的用户信息认证,并且节约了使用成本。随着社会的进步,数字签名信息认证方式必将使计算机信息安全得到更有效的保障。 3.5 VPN加密 通常局域网在生活中很常见,许多企业、商户都组建了独有的局域网络,通过专线将处于不同区域的用户所在的各局域网连接在一

数据加密实验报告

实验报告 课程:计算机保密_ _ 实验名称:数据的加密与解密_ _ 院系(部):计科院_ _ 专业班级:计科11001班_ _ 学号: 201003647_ _ 实验日期: 2013-4-25_ _ 姓名: _刘雄 _ 报告日期: _2013-5-1 _ 报告评分:教师签字:

一. 实验名称 数据加密与解密 二.运行环境 Windows XP系统 IE浏览器 三.实验目的 熟悉加密解密的处理过程,了解基本的加密解密算法。尝试编制基本的加密解密程序。掌握信息认证技术。 四.实验内容及步骤 1、安装运行常用的加解密软件。 2、掌握加解密软件的实际运用。 *3、编写凯撒密码实现、维吉尼亚表加密等置换和替换加解密程序。 4、掌握信息认证的方法及完整性认证。 (1)安装运行常用的加解密软件,掌握加解密软件的实际运用 任务一:通过安装运行加密解密软件(Apocalypso.exe;RSATool.exe;SWriter.exe等(参见:实验一指导))的实际运用,了解并掌握对称密码体系DES、IDEA、AES等算法,及非对称密码体制RSA等算法实施加密加密的原理及技术。 ?DES:加密解密是一种分组加密算法,输入的明文为64位,密钥为56位,生成的密文为64位。 ?BlowFish:算法用来加密64Bit长度的字符串或文件和文件夹加密软件。 ?Gost(Gosudarstvennyi Standard):算法是一种由前苏联设计的类似DES算法的分组密码算法。它是一个64位分组及256位密钥的采用32轮简单迭代型加密算法. ?IDEA:国际数据加密算法:使用128 位密钥提供非常强的安全性; ?Rijndael:是带有可变块长和可变密钥长度的迭代块密码(AES 算法)。块长和密钥长度可以分别指定成128、192 或256 位。 ?MISTY1:它用128位密钥对64位数据进行不确定轮回的加密。文档分为两部分:密钥产生部分和数据随机化部分。 ?Twofish:同Blowfish一样,Twofish使用分组加密机制。它使用任何长度为256比特的单个密钥,对如智能卡的微处理器和嵌入在硬件中运行的软件很有效。它允许使用者调节加密速度,密钥安装时间,和编码大小来平衡性能。 ?Cast-256:AES 算法的一种。 (同学们也可自己下载相应的加解密软件,应用并分析加解密过程) 任务二:下载带MD5验证码的软件(如:https://www.360docs.net/doc/f116788600.html,/downloads/installer/下载(MySQL):Windows (x86, 32-bit), MSI Installer 5.6.11、1.5M;MD5码: 20f788b009a7af437ff4abce8fb3a7d1),使用MD5Verify工具对刚下载的软件生成信息摘要,并与原来的MD5码比较以确定所下载软件的完整性。或用两款不同的MD5软件对同一文件提取信息摘要,而后比较是否一致,由此可进行文件的完整性认证。

AES加密解密实验报告

信息安全工程课程 实验报告 AES加密解密的实现 课程名称:信息安全工程 学生姓名:黄小菲 学生学号: 3112041006 专业班级:系统工程2038班 任课教师:蔡忠闽 2012年11月22日

目录 1.背景 (1) 1.1 Rijndael密码的设计标准: (1) 1.2 设计思想 (1) 2.系统设计 (2) 2.1系统主要目标 (2) 2.2功能模块与系统结构 (2) 2.2.1字节替换SubByte (2) 2.2.2行移位ShiftRow (2) 2.2.3 列混合MixColumn (3) 2.2.4 轮密钥加AddRoundKey (4) 2.2.5 逆字节替换 (4) 2.2.6逆行移位InvShiftRow (4) 2.2.7 逆列混淆 (4) 3 加密模式 (5) 3.1 电子密码本ECB模式 (5) 3.2加密块链模式CBC模式 (6) 4 系统功能程序设计 (8) 4.1基本加密部分 (8) 4.1.1字节替换 (8) 4.1.2行移位 (8) 4.1.3列混合 (9) 4.1.4轮密钥加 (9) 4.1.5密钥扩展 (10) 4.1.6逆字节替换 (11) 4.1.7逆行移位 (11) 4.1.8逆列混合 (12) 4.1.9加密 (12) 4.1.10解密 (13) 5 实验结果 (14) 5.1 需要加密文件 (14) 5.2 实验加密解密结果 (15) 6 参考资料 (16)

1.背景 AES,密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。AES 有一个固定的128位的块大小和128,192或256位大小的密钥大小。Rijndael算法汇聚了安全性、效率高、易实现性和灵活性等优点,是一种较DES更好的算法。 该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael之命名之,投稿高级加密标准的甄选流程。(Rijdael的发音近于"Rhine doll"。)AES在软体及硬件上都能快速地加解密,相对来说较易于实作,且只需要很少的记忆体。作为一个新的加密标准,目前正被部署应用到更广大的范围. 1.1 Rijndael密码的设计标准: ①抵抗所有已知的攻击。 ②在多个平台上速度快,编码紧凑。 ③设计简单。 当前的大多数分组密码,其轮函数是Feistel结构。 Rijndael没有这种结构。 Rijndael轮函数是由3个不同的可逆均匀变换 1.2 设计思想 ?分组和密钥长度可变,各自可独立指定为128、192、256比特。 ?状态 ?算法中间的结果也需要分组,称之为状态,状态可以用以字节为元素的矩阵 阵列表示,该阵列有4行,列数N b为分组长度除32 ?种子密钥 ?以字节为元素的矩阵阵列描述,阵列为4行,列数N k为密钥长度除32

计算机网络信息的数据加密技术分析

计算机网络信息的数据加密技术分析 摘要数据挖掘技术主要指的是一种数据库技术与人工智能技术结合的技术,其通过一定算法,可以从大量的数据信息中搜索到所需信息。在电力调度自动化控制系统中应用数据挖掘技术具有重要意义,所以有必要对其进行分析和探讨。 关键词计算机;网络信息;数据加密技术 引言 计算机网络安全是指通过使用各种的技术和管理措施,来保证计算机当中网络的硬件和软件系统能够很好地运行,能使网络中的数据以及服务器运行,同时也要保证网络信息的保密性和完整性,使网络在传输数据的时候不会让数据发生一些错乱的信息或者是出现丢失、泄露的情况等。计算机网络对世界的影响很大,随着计算机网络技术的应用范围不断地扩大,网络信息的安全以及数据的泄露等问题也越来越明显。只有找到正确的方法并且进行有效的监控才能很好地解决这一问题。计算机网络信息安全也与多种学科相联系着,如何解决这计算机网络安全的问题已经成了现在的一个重要的课题。 1 数据加密技术在计算机网络信息安全中应用的意义 计算机网络信息的概念属于一种宏观概念,主要是由数据载体构成的。因此,计算机网络信息既能够被人为窃取或修改,又能够被人为破坏。为解决计算机网络信息的安全问题,在计算机网络信息安全中应用数据加密技术,即使数据加密文件被第三方人员窃取,未能正确的输入数据密码是无法阅读数据加密文件内容的,这样可以让计算机网络信息的传输获得了更加安全的保护。数据加密技术具有较好的信息保密性、安全性以及信息可辨识性,能够有效保证数据加密文件的收发双方收到安全可靠的网络信息文件[1]。 2 计算机网络信息安全常见的问题 在电脑或者手机上登录个人账户时,常会出现一些个人信息曝光的问题,很多个人信息被一些不法分子利用。除此之外,有些企业的数据也会出现泄漏。据不完全统计,网络信息安全问题正呈现不断上升的趋势。 2.1 计算机授权用户被伪造 计算机数据信息被窃取之后,窃取者多会对信息内容进行修改并加以利用,网络攻击者可以冒充计算机授权用户侵入计算机系统内部。 2.2 网络安全信息被窃取

信息安全 实验一 古典密码算法C语言

信息安全实验报告 课程名称: _ 专业:计算机科学与技术 _2010_级_02班 实验编号:实验项目_ 指导教师_ _ 姓名:闫斌学号: 2010012854 实验成绩:___ 实验一古典密码算法 实验名称:古典密码算法 实验类型: 设计性实验 学时:4 适用对象: 信息安全 1.实验原理 古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。 2.实验目的 通过变成实现替代密码算法和置换密码算法,加深对古典密码体质的了解,为深入学习密码学奠定基础。 3.实验环境 运行windows或linux操作系统的pc机,具有gcc(linux)、VC(Windows)等C语言编译环境。 4.实验内容 4.1替代密码算法 4.1.1 根据实验远离部分对替代密码算法的介绍,创建明文信息,并选择一个密钥k,编写替代密码算法的实现程序,实现加密和解密操作。 替代密码包括多种类型,如单表替代密码、多明码替代密码、多字母替代密码、多表替代密码等。 4.1.2 替代密码算法的远离是使用替代法进行加密,就是将明文的字符用其他字符替代后形成密文。例如字母a、b、c、d,用D、E、F、G做对应替换后形成密文。 4.1.3 代码

#include #include #include #define N 500 int main() { /*--------------------------------*/ int i=0,k,m,n,l; char str1[N],str2[N]; /*C=M+K...K is key...*/ clrscr(); /*--------------------------------*/ printf("This is a code password program......\n"); printf("Please input proclaimed in writing(M)::\n"); gets(str1);/*输入要加密的明文M*/ printf("Please input the key(K)(int)::\n"); scanf("%d",&k);/*输入密钥K*/ m=strlen(str1);/*测试明文的长度*/ printf("The M length is %d\n",m); printf("\n *\n *\n *\n***\n *\n"); printf("ciphertext(C) is ::\n\n"); for(i=0;i96&&n<123)/*对小写进行加密*/ { n=(n-97+k)%26; if(n<0) n=26+n; l=(char)(n+97); printf("%c",l); str2[i]=l; } else if(n>64&&n<91)/*对大写进行加密*/ { n=(n-65+k)%26; if(n<0)

发送数字签名和加密邮件-实验报告

一、实验目的 ●了解什么是数字签名与加密 ●掌握用Outlook Express发送签名的方法 ●掌握用Outlook Express 发送加密的方法。 二、实验环境 ●实验室所有机器安装了Windows 操作系统,并附带Outlook Express。 三、实验容和步骤 1、设置Outlook Express收发QQ (1)打开OUTLOOK EXSPRESS方法为开始/所有程序/OUTLOOK EXPRESS; (2)申请方法:OUTLOOK EXSPRESS的工具//添加//输入显示名/输入你的QQ地址/设置电子服务器名pop.qq. smtp.qq./输入电子的名称和密码/下一步/完成 2、申请免费数字证书

查看证书: 3、在 Outlook Express 设置数字证书 (1)在 Outlook Express 中,单击“工具”菜单中的“”(2)选取“”选项卡中用于发送安全的,然后单击“属性”。

(3)选取安全选项卡中的签名标识复选框,然后单击选择按健 (4)在弹出的“选择默认数字标识”窗口中,选择要使用的数字证书,就选择你刚才申请的个人电子保护证书 (5)点击“确定”按钮,完成证书设置。至此,你可以发送带数字签名的。 4、发送签名 发送时从“工具”菜单中选择“签名”,收件人地址栏后面出现“签名”标志。

本次实验我给为 qq. 发送一个签名。 发送成功: 5、发送加密 发送加密前必须正确安装了对方的“电子保护证书”,只要请对方用他的“电子保护证书”给你发送一个签名,证书会自动安装,并与对方Email地址绑定,否则就要手工安装对方“电子保护证书”。(1)从Outlook Express“工具”菜单中选择“选项”。 (2)鼠标单击“数字标识”按钮。

数据保密之透明加密技术分析

数据保密之透明加密技术分析 透明加密技术是近年来针对企业数据保密需求应运而生的一种数据加密技术。所谓透明,是指对使用者来说是透明的,感觉不到加密存在,当使用者在打开或编辑指定文件时,系统将自动对加密的数据进行解密,让使用者看到的是明文。保存数据的时候,系统自动对数据进行加密,保存的是密文。而没有权限的人,无法读取保密数据,从而达到数据保密的效果。 自WindowsNT问世以来,微软提出的分层的概念,使透明加密有了实现的可能。自上而下, 应用软件,应用层APIhook(俗称钩子), 文件过滤驱动,卷过滤驱动,磁盘过滤驱动,另外还有网络过滤驱动,各种设备过滤驱动。其中应用软件和应用层apihook在应用层(R3),从文件过滤驱动开始,属于内核层(R0).数据透明加密技术,目前为止,发展了3代,分别为第一代APIHOOK应用层透明加密技术; 第二代文件过滤驱动层(内核)加密技术; 第三代内核级纵深加密技术; 第一代:APIHOOK应用层透明加密技术 技术及设计思路:应用层透明加密技术俗称钩子透明加密技术。这种技术就是将上述两种技术(应用层API和Hook)组合而成的。通过windows的钩子技术,监控应用程序对文件的打开和保存,当打开文件时,先将密文转换后再让程序读入内存,保证程序读到的是明文,而在保存时,又将内存中的明文加密后再写入到磁盘中。应用层APIHOOK加密技术,特点是实现简单,缺点是可靠性差,速度超级慢,因为需要临时文件,也容易破解。但由于直接对文件加密直观感觉非常好,对于当初空白的市场来讲,这一旗号确实打动了不少企业。 第二代:文件过滤驱动加密技术 驱动加密技术是基于windows的文件系统(过滤)驱动技术,工作在windows的内核层,处于应用层APIHook的下面,卷过滤和磁盘过滤的上面。设计思想是建立当应用程序(进程)和文件格式(后缀名)进行关联,当用户操作某种后缀文件时对该文件进行加密解密操作,从而达到加密的效果。 内核层文件过滤驱动技术,分IFS和Minifilter2类。IFS出现较早,Minfilter出现在xp 以后。两者的区别可以理解为VC++和MFC的区别,IFS很多事情需要自己处理,而Minifilter 是微软提供了很多成熟库,直接用。由于windows文件保存的时候,存在缓存,并不是立即写入文件,所以根据是否处理了双缓bug,后来做了些细分,但本质还是一样,都是问题的修正版本而已。但由于工作在受windows保护的内核层,运行速度比APIHOOK加密速度快,解决了很多问题和风险。 文件过滤驱动技术实现相对简单,但稳定性一直不太理想。 第三代:内核级纵深沙盒加密技术 之所以叫内核级纵深沙盒加密技术,主要原因是使用了磁盘过滤驱动技术,卷过滤驱动技术,文件过滤驱动技术,网络过滤驱动(NDIS/TDI)技术等一系列内核级驱动技术,从上到下,纵深防御加密。沙盒加密,是当使用者操作涉密数据的时候,对其过程进行控制,对其结果进行加密保存,每个模块只做自己最擅长的那块,所以非常稳定。加密的沙盒是个容器,

信息安全实验报告一

实验成绩 《信息安全概论》实验报告 实验一古典密码实验 专业班级:学号:姓名:完成时间:2016/ 05/ 09 一、实验目的 理解简单加密算法的原理;掌握凯撒密码的原理,完成凯撒密码加解密程序的编写;通过实验,加深对古典密码体制的了解,掌握对字符进行灵活处理的方法。 二、实验内容 根据凯撒密码的原理编写程序,对输入的符号串能够根据设置的密钥分别正确实现凯撒加密和解密功能。 三、实验环境和开发工具 1.Windows 7 系统 2.Eclipse 3.JDK 1.7 四、实验步骤和结果 首先获取要加密的内容以及密钥,凯撒密码的密钥即字符移动的位数。由于凯撒密码器的移位是针对字符的,因此需要将待加密的内容中每个字符取出,然后针对每个字符分别加以移位。主要步骤如下: (1)读取要加密的字符串、密钥。 (2)取出字符串中每个字符。 使用字符串类的 charAt()方法取出每个字符,分别加以移位。

(3)对每个字符进行移位。 由于字母表中共26个字符,因此移位前先将移动的位数(key)和26取模。由于Java中字符和整型可自动转换,因此将字符加上一个正整数即代表在字母表中右移多少位。如果移动的位数是负值,则代表在字母表中左移多少位。 尽管在移动之前已经将移动的位数和26取了模,但通过这种方式实现右移或左移仍可能发生超界。如字母x右移4位应该是字母b,但将字母x增加4后超出26个字母的范围。因此移位后使用两个if语句判断一下,如果向左超界(c<'a')则增加26;向右超界(c>'z')则减去26。 源程序: package Caesar; import java.io.*; import java.util.Scanner; /** * @author SiRuYan */ public class Caesar { // 声明一些全局变量 public static String path; public static String estr = ""; public static char c; /** * 凯撒密码加密方法 * * @param str * @param n */ public static void Encode(String str, int n) { for (int i = 0; i < str.length(); i++) { c = str.charAt(i); if (c >= 'a' && c <= 'z') if (c + n % 26 <= 'z') // 移位后的字母不大于小写字母z,直接移位 estr += (char) (c + n % 26); else // 移位后的字母大于小写字母z,需要在26个字母之间循环 estr += (char) ('a' + ((n - ('z' - c) - 1) % 26)); else if (c >= 'A' && c <= 'Z')

DES加密算法实验报告

苏州科技学院 实验报告 学生姓名:杨刘涛学号:1220126117 指导教师:陶滔 刘学书1220126114 实验地点:计算机学院大楼东309 实验时间:2015-04-20 一、实验室名称:软件实验室 二、实验项目名称:DES加解密算法实现 三、实验学时:4学时 四、实验原理: DES算法由加密、子密钥和解密的生成三部分组成。现将DES算法介绍如下。1.加密 DES算法处理的数据对象是一组64比特的明文串。设该明文串为m=m1m2…m64 (mi=0或1)。明文串经过64比特的密钥K来加密,最后生成长度为64比特的密文E。其加密过程图示如下:

图2-1:DES算法加密过程 对DES算法加密过程图示的说明如下: 待加密的64比特明文串m,经过IP置换(初始置换)后,得到的比特串的下标列表如下: 表2-1:得到的比特串的下标列表

该比特串被分为32位的L0和32位的R0两部分。R0子密钥K1(子密钥的生成将在后面讲)经过变换f(R0,K1)(f变换将在下面讲)输出32位的比特串 f1,f1与L0做不进位的二进制加法运算。运算规则为: f1与L0做不进位的二进制加法运算后的结果赋给R1,R0则原封不动的赋给L1。L1与R0又做与以上完全相同的运算,生成L2,R2……一共经过16次运算。最后生成R16和L16。其中R16为L15与f(R15,K16)做不进位二进制加法运算的结果,L16是R15的直接赋值。 R16与L16合并成64位的比特串。值得注意的是R16一定要排在L16前面。R16与L16合并后成的比特串,经过置换IP-1(终结置换)后所得比特串的下标列表如下: 表2-2:置换后所得比特串的下标列表 经过置换IP-1后生成的比特串就是密文e。 变换f(Ri-1,Ki): 它的功能是将32比特的输入再转化为32比特的输出。其过程如图2-2所示:

数据加密技术在计算机网络信息通信 安全中的应用分析

数据加密技术在计算机网络信息通信安全中的应用分析 摘要:计算机网络通信技术已广泛应用于各行各业,成为人们生活中不可缺少 的重要技术,人们对于计算机网络通信的依赖性也越来越高,对于计算机网络通 信安全面临的各种问题也越来越重视,为了保障计算机网络通信安全,人们采取 了各种技术手段和防护策略,其中一个常用且十分有效的措施就是数据加密技术,采取数据加密技术可以实现数据的完整性、保密性和有效性,保证信息安全,促 进计算机网络通信技术健康有序发展。 关键词:数据加密技术;计算机;网络信息;通信安全;应用 1数据加密方法 1.1对称式加密 这一种加密方式最为突出的一项特征即采用同一个密钥来完成加密与解密过程。一般采用的对称加密算法,尽管较为简单但安全性较高,要想破译加密算法 难度极大。考虑到计算机网络系统的保密性主要是由密钥本身的安全性所决定的,因此,在公开化的计算机网络上安全传输与存储密钥均十分困难。也正是因为在 对称密码学内数据发送方与接收方均采取的是同一种密钥,所以难以确保数据签 名功能的实现。此外,考虑到加密与解密的便捷,这一种加密方式目前已经得到 了十分广泛的应用,如得到广泛应用的DES对称式加密方式,其作为分组加密算 法的典型代表,可将数据分成64位,8位通过奇偶性校对检验,其余位数表示密码长度。这一种加密方法在实际应用过程中先是将原文转换为64位数据组,且 数据组的构成无任何规律,然后把数据组等分为两部分,最终植入密钥,采用函 数实施运算处理,通过数次带入以后即可获取到经过加密处理的密文。但同时也 需注意到这一种加密方式,针对单一密钥管理安全性较差。 1.2非对称式加密 非对称式加密方法不同于对称式加密方法使用单一密钥,非对称式加密在加 密和解密的操作中使用完全不同的密钥,它使用两组密钥,分别是公钥和私钥。 在使用非对称式加密方法的过程中,公钥和私钥需要进行配对使用,否则不可以 打开加密文件,其中公钥可以进行公开使用,但是私钥只能由持有人保管,必须 绝对保密。非对称式加密相对于对称式加密的优点就在于不需要将私钥在网络中 进行传输,数据接收人在接收数据后将自己保管的私钥输入即可,这样便可以有 效避免密钥传递安全问题,但同时,非对称式加密相对耗时较长,加密和解密的 速度赶不上对称式加密方法。 2数据加密技术常见类型 2.1节点加密技术 节点加密顾名思义,发生的场所是在数据节点。在这种方法中,数据在到达 节点前采用的仍旧是普通编码方法,而在到达数据节点时,节点上预先设置的安 全模块就会启动,与数据进行有效互联,通过特定加密方式完成对数据的加密。 同理,在另一节点也可按照同样的方法对数据进行解密。这种技术有利于数据在 通信过程中的保密性和安全性。但其也有一定不足,即加密接收的数据或解密后 的数据均为普通编码方法,外部非法人员可在这两个区域内对数据进行窃取攻击。 2.2链路加密技术 所谓链路加密指的是在计算机网络通信链路上进行加密,这是对数据保护的 首次加密,通过反反复复的加密解密过程,保证信息传播过程中用户信息、数据 的安全。由于其在数据加密过程中处于先锋的位置,因此加密的程度偏弱,需要

加密技术及密码破解实验报告

第九章、实验报告 实验一、设置Windows启动密码 一、实验目的:利用Windows启动密码保存重要文件。 二、实验步骤: 1、在Windows XP系统中选择开始——运行,在打开输入框中“syskey.exe”,点击确定,打开“保证Windows XP账户数据库的安全”对话框。 2、单击【更新】,打开【启动密码】对话框,然后输入密码,在【确认】文本框中再次输入密码,单击【确定】

实验二、为word文档加密解密 一、实验目的:保护数据的安全 二、实验步骤: 1、打开一个需要加密的文档,选择【工具】——【选项】——【安全性】然后输入想要设置打开文件时所需的密码 2、单击【高级(A)】打开加密类型对话框,选中【加密文档属性】复选框,单击【确定】。

3、打开文件的【确认密码】对话框,输入打开文件时需要的密码,单击【确定】,随即打开【确认密码】对话框,输入密码。 4、保存文件后,重新打开Word文档,打开【密码】,输入打开文件所需的密码,单击【确定】输入修改的密码,单击【确定】 破解word密码 (1)安装Advanced Office Password Recovery软件,安装完成后打开需要破解的word 文档,进行暴力破解,结果如图所示: 实验三、使用WinRAR加密解密文件

一.实验目的:加密文件,保证文件的安全性。 二.实验步骤: 1、在需要加密的文件夹上右击,选中【添加到压缩文件】打开【压缩文件名和参数】 2、选中【压缩文件格式】组合框中的【RAR】并在【压缩选项】中选中【压缩后删除源文件】然后切换到【高级】,输入密码,确认密码。 3、关闭对话框,单击确定,压缩完成后,双击压缩文件,系统打开【输入密码对话框】 破解WinRAR加密的文件 (1)安装Advanced RAR Password Recovery软件,打开WinRAR加密文件,进行暴力破解,获得密码。结果如图:

古典加密实验报告

古典密码算法 一、实验目的 学习常见的古典密码学算法,通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。 二、实验要求 分析替代密码算法和置换密码算法的功能需求,详细设计实现替代密码算法和置换密码算法的数据结构和流程,给出测试用例和测试步骤,得出测试和结论。替代密码算法和置换密码算法的实现程序必须提供加密和解密两个接口:int encrypt()和int decrypt()。当加密或者解密成功时返回CRYPT_OK,失败时返回CRYPT_ERROR。 三、实验原理 古典密码算法曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。下面介绍两种算法:替代密码和置换密码。 1.替代密码的原理是使用替代法进行加密,就是将明文由其它的字母、数字或符合所代替后形成密文。这里每个明文字母对应的密文字母可能是一个,也可能是多个。接收者对密文进行逆向替换即可得到明文。 2.置换密码算法的原理是不改变明文字符,而是按照某一规则重新排列消息中的比特或字符顺序,才而实现明文信息的加密。置换密码有时又称为换位密码。 我实验过程中替代密码是单表替换,用字母的下一个字母代替:for(j = 0; j < i; j++)

{ if(96 < Mingwen[j]&&Mingwen[j] < 123) { Miwen[j] = 'a' + (Mingwen[j] - 'a' + 1) % 26; } else { Miwen[j] = 'A' + (Mingwen[j] - 'A' + 1) % 26; } } 置换加密主要是对密钥进行整理,还有就是动态分配二维数组,将明文和密文填充置的过程,换密码关键代码如下: for(a = 0; a < k; a++) { for(b = 0; b < hang; b++) { Miwen[i] = p[b][ord[j]]; i++; } j++; } for(a = 0; a < 26; a++) { for(b = 0; b < k; b++) { if(key1[b] == alphatable[a]) { ord[b] = ind++; } } } 具体加密见下图:

AES加密算法实验报告

实验报告 学号:姓名:专业:班级:第10周

简介 #in elude vstri ng> #in elude class pla in text { public : plai ntext(); static void createplaintext( unsigned char a[]); 实验内容(算法、 程 序、 步骤 和方 法)

static void SubBytes( unsigned char p[16]); static void inSubBytes( unsigned char p[16]); static void ShiftRows( unsigned char e[]); static void inShiftRows( unsigned char e[]); static void MatrixToByte( unsigned char e[]); static void inMatrixToByte( unsigned char e[]); static unsigned char FFmul( unsigned char a, unsigned char b); static void KeyAdding( unsigned char state[16], unsigned char k[][4]); static void KeyExpansion( unsigned char* key, unsigned char w[][4][4]); ~plai ntext(); private : }; #in elude "" using namespacestd; static unsigned char sBox[] = {}; /定义加密S盒/ unsigned char insBox[256] ={}; //定义解密S盒 pla in text ::plai ntext() { unsigned int p[16]; for (int j = 0; j<200; j++) { p[i] = a[i]; a[i] = a[i + 16]; } void pla in text ::createpla in text( un sig ned char a[]) // 仓U建明文 int i = 0; if ( a[j] == 0) for (; i<16; i++)

数据加密技术分析及应用_郭敏杰

第21卷第5期2005年10月 赤峰学院学报(自然科学版) Journal of Chifeng College(Natural Science Edition) Vol.21No.5 Oct.2005数据加密技术分析及应用 郭敏杰 (内蒙古伊泰丹龙药业有限责任公司,内蒙古 赤峰 024000) 摘 要:数据加密技术是实现网络安全的关键技术之一.本文系统地介绍了当前广泛使用的几种数据加密技术:对称密钥加密、公开密钥加密以及混合式加密,对它们进行了客观上的分析并介绍了在网络及其他方面的应用状况. 关键词:数据加密;密钥;网络安全 中图分类号:TP309.7文献标识码:A文章编号:1673-260X(2005)05-0041-01 伴随微机的发展与应用,数据的安全越来越受到高度的重视.数据加密技术就是用来保证信息安全的基本技术之一.数据加密实质是一种数据形式的变换,把数据和信息(称为明文)变换成难以识别和理解的密文并进行传输,同时在接收方进行相应的逆变换(称为解密),从密文中还原出明文,以供本地的信息处理系统使用.加密和解密过程组成为加密系统,明文和密文统称为报文. 1 对称密钥加密算法 对称式密钥加密技术是指加密和解密均采用同一把秘密钥匙,而且通信双方必须都要获得这把钥匙,并保持钥匙的秘密.当给对方发信息时,用自己的加密密钥进行加密,而在接收方收到数据后,用对方所给的密钥进行解密. 对称密钥加密有许多种算法,但所有这些算法都有一个共同的目的———以可还原的方式将明文(未加密的数据)转换为暗文.暗文使用加密密钥编码,对于没有解密密钥的任何人来说它都是没有意义的.由于对称密钥加密在加密和解密时使用相同的密钥,所以这种加密过程的安全性取决于是否有未经授权的人获得了对称密钥.这就是它为什么也叫做机密密钥加密的原因.希望使用对称密钥加密通信的双方,在交换加密数据之前必须先安全地交换密钥. 加密算法中最简单的一种就是“置换表”算法,这种算法也能很好达到加密的需要.每一个数据段(总是一个字节)对应着“置换表”中的一个偏移量,偏移量所对应的值就输出成为加密后的文件.加密程序和解密程序都需要一个这样的“置换表”.事实上,80×86cpu系列就有一个指令`xlat'在硬件级来完成这样的工作.这种加密算法比较简单,加密解密速度都很快,但是一旦这个“置换表”被对方获得,那这个加密方案就完全被识破了.更进一步讲,这种加密算法对于黑客破译来讲是相当直接的,只要找到一个“置换表”就可以了.这种方法在计算机出现之前就己经被广泛的使用. 对这种“置换表”方式的一个改进就是使用2个或者更多的“置换表”,这些表都是基于数据流中字节的位置的,或者基于数据流本身.这时,破译变的更加困难,因为黑客必须正确地做几次变换.通过使用更多的“置换表”,并且按伪随机的方式使用每个表,这种改进的加密方法已经变的很难破译. 2 基于公钥的加密算法 基于公钥的加密算法有两种方式:对称密钥算法和非对称密钥算法.所谓对称密钥加密方法中,对信息的加密和解密都使用相同的密钥,或者可以从一个密钥推导出另一个密钥,而且通信双方都要获得密钥并保持密钥的秘密.当需要对方发送信息时,用自己的加密密钥进行加密,而在接受方收到数据后,用对方所给的密钥进行解密. 非对称密钥算法就是加密解密使用不同的密钥.这种算法的基本原理是利用两个很大的质数相乘所产生的乘积来加密,这两个质数无论哪个先与原文件编码相乘、对文件加密,均可由另一个质数再相乘来解密,但要用一个质数来求出另一个质数则是十分困难的. 非常著名的pgp公钥加密以及rsa加密方法都是非对称加密算法. 3 对称密钥和公钥相结合的加密技术 根据对称密钥和公钥加密特点,在实际应用中将二者相结合,即使用DES/IDE A和RSA结合使用.首先发信者使用DES/IDEA算法用对称钥将明文原信息加密获得密文,然后使用接受的RSA公开钥将对称钥加密获得加密的DES或IDE A密钥,将密文和密钥一起通过网络传送给接收者.接受方接受到密文信息后,先用自己的密钥解密而获得DES或IDEA密钥,再用这个密钥将密文解密而后获得明文原信息.由此起到了对明文信息保密作用. 4 加密技术的应用及发展 随着网络互联技术的发展,信息安全必须系统地从体系结构上加以考虑.ORI(开放系统互联)参考模型的七 (下转第44页) · 41 · DOI:10.13398/https://www.360docs.net/doc/f116788600.html, ki.issn1673-260x.2005.05.024

相关文档
最新文档