网络安全防御技术实验报告

网络安全防御技术实验报告

ID:9531979

大小:439.50 KB

页数:19页

时间:2018-05-02

网络安全防御技术实验报告_第1页
网络安全防御技术实验报告_第2页
网络安全防御技术实验报告_第3页
网络安全防御技术实验报告_第4页
网络安全防御技术实验报告_第5页
资源描述:

《网络安全防御技术实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、网络安全防御技术实验报告姓名:秦映林学号:0903070103班级:信息0701班指导老师:杨振宇实验地点:综合实验楼实验时间:2010年11月实验一:只使用XOR的加密及其分析实验要求:编写程序分别实现如下功能:a)用户输入明文PlainText和密钥Key(都可以从文件读取),用分组异或XOR生成相应密文,并输出到文件(“学号#1.dat“)。b)获得(交换)其他同学的密文文件(“学号#1.dat“),在明文、密钥(甚至”密钥长度”)未知的情况下,用穷举法获得明文和密钥。c)改进加密算法以提高安全性。(自己发挥)实验过程:设计上要注意两点的内容,第一是对不同长度的密钥处理,以

2、得到最后相同长度的最终密钥,第二是对明文的分组处理,并且在特定情况下要进行补白.鉴于本次实验的目的是了解分组异或的原理及简单实现,因此这里避开特殊的繁琐之处,对密钥的要求不高,只需要8个比特位的密钥.如此设计是为了不管用户输入多长的密钥,都能很方便得得到最后的八位密钥.另外,由于密钥是8位,因此降低了分组难度.相当于明文中每8个比特位为一组,这样只需将明文与密钥进行简单的异或.对用户输入的常见字符进行处理,得到密钥,再由密钥对明文加密,整体逻辑简单,编程容易.这里用C语言来实现.#include#include#include

3、h>typedefunsignedcharUC;UCgetKey(constchar*k){//得到八位密钥UCans=0;inti=0;while(k[i]){ans^=(UC)k[i++];}returnans;}char*work_code(constchar*t,constchar*k){intlent=strlen(t),lenk=strlen(k),i=0;char*v=(char*)malloc(sizeof(char)*lent);UCkey=getKey(k);while(t[i]){v[i]=key^t[i++];}v[i]=0;returnv;}voidwo

4、rk_encode(constchar*v,constchar*k){inti=0;UCkey=getKey(k);while(v[i]){printf("%c",key^v[i++]);}}intmain(void){freopen("in.txt","r",stdin);freopen("out.txt","w",stdout);chart[1000],k[1000];while(scanf("%s%s",t,k)!=EOF){char*v=work_code(t,k);printf("%s",v);//work_encode(v,k);}return0;}实验结果:加密

5、前:加密后:实验总结:从上面的数据可以看出解密后的两份数据如果以ASCII解析的话,看上去好像是差不多的,两份数据之间的差异是大小写字母倒转过来,从标准的ASCII表中可以得知,大写英文字母和小写英文字母之间相差32字节,即上面两份解密后的数据中每个字节都相差32字节,如果从ASCII解析角度考虑的话,的确难以分辨哪份数据才是正确,因为不知道解密后的文件数据中除了包含用于ASCII编码显示的数据外还有没有包括别的有用的二进制解析的数据。要知道解密后的数据中有没有包含二进制解析的数据,那么不妨用Windows的记事本打开这两份解密后的文件,因为Windows的记事本是以ASCII解

6、析数据的,浏览ASCII解析的文件比较直观,虽然Winhex中也可以直接以ASCII解析观察数据,但不如Windows的记事本方便。实验二:用Feistel结构构造加密算法实验要求:应用Feistel结构,构造加解密算法。并编写2个程序分别实现对文件进行加密和解密,加密后的文件命名为“学号#2.dat“。要求采用分组链接模式(CBC)。实验过程:Feistel结构:加密:Li=Ri-1;Ri=Li-1ÅF(Ri-1,Ki)解密:Ri-1=LiLi-1=RiÅF(Ri-1,Ki)=RiÅF(Li,Ki)Feistel加密过程:输入:长为2w比特的明文分组密钥k输出:长为2w比特的密

7、文分组核心代码:while(!feof(fp)){//从文件中读取位分组if((fgets(TempFileContent,64,fp))==NULL){printf(">>readfileerror");return0;}for(inti=0;i<64;i++)//将读出的位明文存入temp数组中进行操作{temp[i]=TempFileContent[i];}for(inti=0;i<64;i++)//初始置换{TempFileContent[i]=temp[IP[i]]

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。