网络安全课程设计_第1页
网络安全课程设计_第2页
网络安全课程设计_第3页
网络安全课程设计_第4页
网络安全课程设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、班级:网络11-1 学号:110341* 姓名:刘*网络安全课程设计对称加密算法一、实验目的1、熟悉和掌握对称加密算法的原理及其一般过程;2、掌握对称加密算法的基本方法:替代(substitute)与置换(transposition);3、掌握使用一定的编码开发工具(对具体的开发平台和工具不作要求)。二、实验内容1、 替代加密法1) 编程实现课本习题2.1的线形替代加密方法的破解(提示:可使用穷举法);(已知替代变换函数f(a)=ak mod 26,且9k mod 26=15,试计算k)2) 破解后,实现该方法的加密运算(输入明文,输出密文)和解密运算(输入密文,输出明文)(解密运算提示:设密

2、钥为k,密文为c,明文为m,则有m*k mod 26=c,因为m<26且唯一,同样可使用穷举法搜索出m);3) 加密字符串“substitute”,输出密文;4) (可选) 推导解密密码本,即明文与密文字母的一一对应关系。2、 置换加密法1) 给定置换表“86427531”,编程实现基于该表的加密运算;2) 加密字符串“transposition”,输出密文(提示:如字符串长度不是8的倍数,则需在字符串结尾后填充空格,使得其总长度为8的倍数);3) 参照课本表2-1和表2-8的关系,推导逆置换表,并编程实现相应的解密运算。三、程序主要代码1、替代加密法substitute1)各种功能实现

3、算法 public void actionPerformed(ActionEvent e) int k = 0;Tab tab = new Tab();tab.tabOne();/求K算法if (e.getActionCommand().equals("求K") lab: for (int i = 0; i < 100000; i+) while (9 * i % 26 = 15) k = i;break lab;if (l_encryptKey.getText().lastIndexOf("加密密钥") =-1) l_encryptKey.set

4、Text("加密密钥 k=" + k + l_encryptKey.getText();frame.repaint();/求解密密码本算法if (e.getActionCommand().equals("求解密密码本") l_plaintxt.setText(tab.mingwen);l_ciphertxt.setText(tab.miwen);if (l_encryptKey.getText().lastIndexOf("解密密钥") =-1) l_encryptKey.setText(l_encryptKey.getText()

5、+ " 解密密钥1/k="+ tab.decryption_key);frame.repaint();/加密算法if (e.getActionCommand().equals("加密") String str=""for(int n=0;n<txt_lowercase.getText().trim().length();n+)char c=txt_lowercase.getText().trim().charAt(n);int key=0;for(int i=0;i<tab.cipher_map.size();i+)if(

6、tab.cipher_map.get(i)=c)key=tab.map.get(i);char c1=tab.cipher_map.get(key);str=str+c1+" "break;l_Aciphertxt.setText(str);frame.repaint();/解密算法if (e.getActionCommand().equals("密码本解密") String str=""for(int n=0;n<txt_mlowercase.getText().trim().length();n+)char c=txt_ml

7、owercase.getText().trim().charAt(n);for(int i=0;i<tab.cipher_map.size();i+)/获取输入的待解密的密文字符所对应的序号if(tab.cipher_map.get(i)=c) for(int j=0;j<tab.map.size();j+)/获取密文字符序号所对应的明文字符序号if(tab.map.get(j)=i)/在序号和字符映射表cipher_map里找出明文字符序号所对应的字符char c2=tab.cipher_map.get(j);str=str+c2+" "l_Aplaintxt

8、.setText(str);frame.repaint(); 2)存放明文密文的哈希map /明文(26个小写字母)String mingwen=""/密文(26个小写字母)String miwen=""/解密密钥int decryption_key=0;HashMap<Integer,Character> cipher_map;HashMap<Integer, Integer> map;public void tabOne()/存放明文的哈希map,键为明文的序号,值为小写字母cipher_map=new HashMap<

9、Integer, Character>();/将26个小写字母放入map,并连成字符串赋给mingwenfor(int i=97;i<123;i+)char c=(char)i;cipher_map.put(i-97, c);mingwen=mingwen+cipher_map.get(i-97)+" "/存放明文密文对应关系的哈希mapmap=new HashMap<Integer,Integer>();for(int i=0;i<26;i+)map.put(i, i*19%26);miwen=miwen+cipher_map.get(map

10、.get(i)+" "lab:for(int j=0;j<10000;j+)while(map.get(2)*j%26=2)decryption_key=j;break lab;2、 置换加密法transposition1)各种功能实现算法public void actionPerformed(ActionEvent e) if (e.getActionCommand().equals("加密") /存放明文:已经加够长度(8的倍数)String str=""/未改变的明文长度int length=txt_lowercase.g

11、etText().length();/加入原始明文不是8的倍数,则加空格凑够while(length%8!=0)txt_lowercase.setText(txt_lowercase.getText()+" ");/加空格后的明文长度length=txt_lowercase.getText().length();/加空格后的明文str=txt_lowercase.getText();/存放密文字符串String strall=""/得到明文长度为8的几倍,将明文截成几段8位的数组进行加密,然后再将每段的密文拼起来int h=str.length()/8;

12、/由上面得出的倍数,确定循环次数n<h;对每一段明文进行处理for(int n=0;n<h;n+)String s=""/每一段明文都是8位s=str.substring(n*8, (n+1)*8);/调用处理的方法,将s作为参数strall+=encrypte(s);l_Aciphertxt.setText(strall);frame.repaint();System.out.println(strall);/解密和加密的过程相同,只是调用的方法不同if (e.getActionCommand().equals("解密") String s

13、tr=""int length=txt_mlowercase.getText().length();while(length%8!=0)txt_mlowercase.setText(txt_mlowercase.getText()+" ");length=txt_mlowercase.getText().length();str=txt_mlowercase.getText();String strall=""int h=str.length()/8;for(int n=0;n<h;n+)String s=""

14、;s=str.substring(n*8, (n+1)*8);strall+=decipher(s);l_Aplaintxt.setText(strall);frame.repaint();/加密方法public String encrypte(String str1)String str=""String s_c=""/明文数组String array_str=new String8;for(int n=0;n<8;n+)/得到明文的每一位char c=str1.charAt(n);/转换为string类型s_c=c+""/放

15、入明文数组中array_strn=s_c;/这个for循环之后就把明文完全放入数组中了/* * 找出第n+1位(map的键是从1开始的)的明文对应的密文序号get(n+1)-1;这个序号就是在数组中的下标 * -1的原因是:在数组中,下标是从0开始的 */Tab tab=new Tab();tab.funtion();for(int n=0;n<array_str.length;n+)str=str+array_strtab.trans.get(n+1)-1+""return str; /解密方法public String decipher(String str1)S

16、tring str=""/密文数组,初始值都为空String array_str="","","","","","","",""String cipher="86427531"for(int n=0;n<8;n+)/得到明文的每一位String c=str1.charAt(n)+""/当前遍历到的这个明文在密文数组中的位置int position=Integer.pars

17、eInt(cipher.charAt(n)+"")-1;/将明文放入密文数组中array_strposition=c+""/这个for循环之后就把明文完全放入密文数组中了for(int i=0;i<8;i+)/将密文一个个输出来拼接成字符串strstr+=array_stri;return str; 2)存放置换关系的哈希表HashMap<Integer,Integer>trans=new HashMap<Integer,Integer>();public void funtion()/置换表String str="

18、;86427531"for(int n=0;n<str.length();n+)/拿到置换表的每一位char c=str.trim().charAt(n);String s=c+""/转换为int类型int i=Integer.parseInt(s);/放入哈希表(键 :密文下标;值:明文下标)trans.put(n+1,i); 4、 实验结果截图(1)替代加密截图(2)置换加密截图Linux系统iptables防火墙一、实验目的1、熟悉和掌握TCP/IP协议的基础概念和方法;2、掌握防火墙的概念、功能分类及实现方法;3、掌握Linux系统防火墙和iptab

19、les防火墙的配置方法。二、实验原理1、防火墙的任务防火墙在实施安全的过程中是至关重要的。一个防火墙策略要符合四个目标,而每个目标通常都不是一个单独的设备或软件来实现的。大多数情况下防火墙的组件放在一起使用以满足公司安全目的需求。防火墙要能满足以下四个目标:1> 实现一个公司的安全策略防火墙的主要意图是强制执行你的安全策略,比如你的安全策略需要对MAIL服务器的SMTP流量做限制,那么你要在防火墙上强制这些策略。2> 创建一个阻塞点防火墙在一个公司的私有网络和分网间建立一个检查点。这种实现要求所有的流量都要经过这个检查点。一旦检查点被建立,防火墙就可以监视,过滤和检查所有进出的流量

20、。网络安全中称为阻塞点。通过强制所有进出的流量都通过这些检查点,管理员可以集中在较少的地方来实现安全目的。3> 记录internet活动防火墙还能强制记录日志,并且提供警报功能。通过在防火墙上实现日志服务,管理员可以监视所有从外部网或互联网的访问。好的日志是适当网络安全的有效工具之一。4> 限制网络暴露防火墙在你的网络周围创建了一个保护的边界。并且对于公网隐藏了内部系统的一些信息以增加保密性。当远程节点侦测你的网络时,他们仅仅能看到防火墙。远程设备将不会知道你内部网络的布局以及都有些什么。防火墙提高认证功能和对网络加密来限制网络信息的暴露。通过对所能进入的流量进行检查,以限制从外部

21、发动的攻击。2、iptables及其命令格式iptables是Linux 2.4.X 的内核防火墙,其工作原理为对经过网络模块的数据包的处理,各数据包按流经位置进入相应的规则链,iptables逐条对比链内的规则,如果满足条件,则进行相应的动作。其配置文件为/etc/sysconfig/iptables。命令格式: iptables 指令+规则链+条件+动作l iptables指令(对规则链的操作)nA chain -append 添加到规则链中nD chain -delete 从规则链中删除匹配的规则nLchain -list 列出在一条链或所有链上的规则 (-line-numbers)nF

22、 chain -flush 清除一条链或所有链上的规则n-P chain target -policy 把一个规则链上的策略改变为目标niptables内置有三个表filter、nat、mangle,缺省为filter表,可使用-t参数来选择操作的表,用户可自定义表l iptables规则链(chain)进来的数据包路由本机发出的数据包FORWARDINPUTOUTPUT l Iptables条件n-s IP地址 源地址n-d IP地址 目的地址n-i 接口名 接收的接口n-o 接口名 发送的接口n-p tcp/udp/icmp/47 协议n-dport 目的端口n-sport 源端口n-sy

23、n 建立连接请求n-m state ESTABLISHED / RELATED / NEW / INVALID 状态包过滤 l iptables动作(policy)(对数据包的操作)n -j ACCEPTn -j DROPn -j REJECT( tcp-reset/icmp-port-unreachable )三、实验步骤3、 准备工作l 同一局域网内的2台PCa) A的操作系统为Linux,在A安装网络服务及配置iptables;b) B对A的配置进行验证,主要使用基于icmp协议的ping命令和基于tcp协议的ftp相关命令或软件,假定其ip为23;c) 为避免与机房

24、其他主机发生IP冲突,最好重设A、B地址为静态地址,A、B在同一网段,且不使用192.168.1.x等机房常用网段;测试A、B可互ping通。l 在A:1) 启动vsftpd2)增加1个一般用户,如abc3)添加该新用户为ftp用户编辑(可使用gedit等) /etc/vsftpd/vsftpd.conf,加入userlist_enable=YESuserlist_deny=NOuserlist_file=/etc/vsftpd/ulis编辑gedit /etc/vsftpd/ulis,加入Abc4)验证系统已启动iptables (默认为enable)system setting ->

25、 server setting -> service config -> iptablesl 建议学习使用netstat命令,分析网络连接状态4、 配置Linux的系统防火墙5) A: start -> system setting -> security level -> enable ftp(only),允许系统建立ftp连接6) B: ftp测试之 (使用user psw ls lcd get等命令)7) A: start -> system setting -> security level -> disable ftp,禁止系统建立ft

26、p连接8) B测试之5、 使用iptables命令配置防火墙,熟悉几类基本过滤原则的配置方法(有关ftp的操作,必须确认系统防火墙允许建立ftp连接,因其优先级高于iptables配置)0> 备份 /etc/sysconfig/iptables1> 阻塞某IP的连接A: 阻塞# iptables -A INPUT -s 23 -j DROPB: ping,测试之A: 取消阻塞# iptables -D INPUT -s 23 -j DROPB: ping,测试之(以下只列出实验过程的关键步骤,其他命令与测试请在实验过程中补足)2> 阻塞

27、某网段的连接A: # iptables -A INPUT -s /24 -j DROPA: # iptables -D INPUT -s /24 -j DROP3> 阻塞某协议的连接,如icmpA:# iptables -A INPUT -p icmp -j DROPB: ping,测试之A:# iptables -D INPUT -p icmp -j DROP 4>阻塞某端口的连接,如ftpcmd使用的21端口A:# iptables -A INPUT -p tcp -dport 21 -j DROPB: ftp,测试之A:# iptables -D INPUT -p tcp -dport 21 -j DROP5> 阻塞连接请求(基于状态的阻塞)5.1 阻塞本机到外部的连接A:# iptables -A OUTPUT -p tcp -syn -j DROPB:使用port模式(port模式:服务器发起数据连接),连接A的ftp服务(使用IE,在“工具-inter

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论