- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络安全防御技术实验报告
网络安全防御技术
实验报告
姓 名:秦映林
学 号:0903070103
班 级:信息0701班
指导老师:杨振宇
实验地点:综合实验楼
实验时间:2010年11月
实验一:只使用XOR的加密及其分析
实验要求:
编写程序分别实现如下功能:
a)用户输入明文PlainText和密钥Key(都可以从文件读取),用分组异或XOR生成相应密文,并输出到文件( “学号#1.dat“ )。
b)获得(交换)其他同学的密文文件(“学号#1.dat“ ),在明文、密钥(甚至”密钥长度”)未知的情况下,用穷举法获得明文和密钥。
c)改进加密算法以提高安全性。(自己发挥)
实验过程:
设计上要注意两点的内容,第一是对不同长度的密钥处理,以得到最后相同长度的最终密钥,第二是对明文的分组处理,并且在特定情况下要进行补白.
鉴于本次实验的目的是了解分组异或的原理及简单实现,因此这里避开特殊的繁琐之处,对密钥的要求不高,只需要8个比特位的密钥.如此设计是为了不管用户输入多长的密钥,都能很方便得得到最后的八位密钥.
另外,由于密钥是8位,因此降低了分组难度.相当于明文中每8个比特位为一组,这样只需将明文与密钥进行简单的异或.
对用户输入的常见字符进行处理,得到密钥,再由密钥对明文加密,整体逻辑简单,编程容易.这里用C语言来实现.
#includestdio.h
#includestring.h
#includestdlib.h
typedef unsigned char UC;
UC getKey( const char *k ){ //得到八位密钥
UC ans = 0; int i = 0;
while( k[i] ){ ans ^= (UC)k[i++]; }
return ans;
}
char *work_code( const char *t, const char *k ){
int lent = strlen(t), lenk = strlen(k), i = 0;
char *v = (char*)malloc(sizeof(char)*lent);
UC key = getKey(k);
while( t[i] ){ v[i] = key^t[i++]; }
v[i] = 0;
return v;
}
void work_encode( const char *v, const char *k ){
int i = 0;
UC key = getKey(k);
while( v[i] ){ printf(%c, key^v[i++]); }
}
int main ( void ){
freopen(in.txt,r,stdin); freopen(out.txt,w,stdout);
char t[1000],k[1000];
while( scanf(%s%s,t,k) != EOF ){
char *v = work_code( t,k );
printf(%s\n,v);
//work_encode(v,k);
}
return 0;
}
实验结果:
加密前:
加密后:
实验总结:
从上面的数据可以看出解密后的两份数据如果以ASCII解析的话,看上去好像是差不多的,两份数据之间的差异是大小写字母倒转过来,从标准的ASCII表中可以得知,大写英文字母和小写英文字母之间相差32字节,即上面两份解密后的数据中每个字节都相差32字节,如果从ASCII解析角度考虑的话,的确难以分辨哪份数据才是正确,因为不知道解密后的文件数据中除了包含用于ASCII编码显示的数据外还有没有包括别的有用的二进制解析的数据。要知道解密后的数据中有没有包含二进制解析的数据,那么不妨用Windows的记事本打开这两份解密后的文件,因为Windows的记事本是以ASCII解析数据的,浏览ASCII解析的文件比较直观,虽然Winhex中也可以直接以ASCII解析观察数据,但不如Windows的记事本方便。
实验二:用 Feistel结构构造加密算法
实验要求:
应用Feistel结构,构造 加解密算法。并编写2个程序分别实现对文件进行加密和解密,加密后的文件命名为“学号#2.dat“ 。要求采用分组链接模式(CBC)。
实验过程:
Feistel结构:
加密: Li = Ri-1; Ri = Li-1(F(Ri-1,Ki)
解密: Ri-1 = Li
Li-1 = Ri(F(Ri-1,Ki)
= Ri(F(Li,Ki)
Feistel加密过程:
输入:
长为2
文档评论(0)