信息安全安全2

上传人:leixi****n2022 文档编号:279550838 上传时间:2022-04-20 格式:DOC 页数:19 大小:138.50KB
返回 下载 相关 举报
信息安全安全2_第1页
第1页 / 共19页
信息安全安全2_第2页
第2页 / 共19页
信息安全安全2_第3页
第3页 / 共19页
信息安全安全2_第4页
第4页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《信息安全安全2》由会员分享,可在线阅读,更多相关《信息安全安全2(19页珍藏版)》请在金锄头文库上搜索。

1、一、实习目的1理解对称加密算法的原理,熟悉常用的对称加密算法:DES、TripleDES、Blowfish;2以DES加密算法为例,掌握分组加密算法加、解密过程的实现。二、实习要求1实习前认真预习第5章有关内容;2熟悉java中的java.security.*和java.crypto.*中的相关类;3按要求认真撰写实习报告。三、实习内容1阶梯任务(1) 以本地两个目录模拟两个用户,实现基本DES加密通讯,引入的包具体到类;(2)对于DES加密实现图形界面,用户可以输入明文和密钥,在文本框中显示对应密文;(3)实现用户对文件的操作,用户可以通过指定路径文件和密钥,加密结果存储在指定文件中;(4)

2、采用SSL,建立安全通信过程;(5)将方案移植到某个web应用中。2实现提示(1) 可以利用java中的KeyGenerator类创建对称秘钥,利用工厂类KeyGenerator的静态方法getInstance()获得KeyGenerator()类对象;(2) 方法getInstance()的参数为字符串类型,指定加密算法的名称如:Blowfish、DES、DESede、HmacMD5或HmacSHA1等;(3) 利用工厂类Cipher的对象可以创建密码器。同样的,getInstance()的参数为字符串类型,指定加密算法的名称。四、实验结果1、实现客户端和服务器连接模拟两个用户,实现基本DE

3、S加密通讯。 2、 加密产生密文结果:3、 服务器接收并解密得到明文:4、 输出加密文件内容乱码,很遗憾没有修改正确。五、 实验总结1、 DES加密算法:DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。其密钥长度为56位,明文按64位进行分组,将分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。2、 DES加密算法特点:分组比较短、密钥太短、密码生命周期短、运算速度较慢。3、 DES工作的基本原理:入口参数有三个:key、data、mode。 key为加密解密使用的密钥,data为加密解密的数据,mode

4、为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。4、 SSL协议:普通的TCP通信无法保证数据的安全,它随时可能被第三方截获而泄漏通信双方之间的隐私,SSL协议能够保证交互双方的数据按密文方式传输,第三方在没有私钥的情况下几乎无法破解,从而到达保密的目的。5、 SSL的交互过程: l 建立TCP连接由于SSL协议依赖于TCP连接实施,所以在SSL交互之前需要先建立TCP连接。客户端connect服务端,服务端acccept客户端,经历三次握手以后

5、TCP连接建立。l 客户端发送SSL请求客户端(Client)向服务端(Server)发送自身使用的SSL版本、加密算法的相关配置、随机数据以及其在在SSL协议中需要用到的信息。l 服务端处理SSL请求服务器(Server)反馈给客户端(Client)自己的SSL版本、加密算法的相关配置、随机数据以及用自己的私有密钥加密的SERVER-HELLO信息。服务端(Server)紧接着将自己的证书(包含公共密钥)传递过去。同时有个可选项目,即服务端(Server)可以要求客服端(Client)发送自己的证书。l 客户端验证服务端身份客服端(Client)用服务端(Server)传递过来证书验证服务端

6、(Server)的身份,证书验证通过后利用服务端(Server)的公共密钥尝试解开被其用私有密钥加密过的SERVER-HELLO信息,如果解开失败,说明该SERVER-HELLO必然是假的,故结束本次通信。l 客户端发送公共密钥加密过的随机数据客户端端(Client)生成随机数据(sharedsecret),并且把这个随机数据用服务端(Server)发送过来的的公共密钥加密,此次加密过程产生本次握手中的premastersecret(这个步骤是有可能有服务端的参与的,具体情况由他们使用的加密算法决定),然后将它(premastersecret)送回给服务端(Server)。如果服务端(Serv

7、er)要求需要验证客户端(Client),那么客服端(Client)也需要自己把自己的证书(包含公共密钥)传递过去,同时送一些自己签过名(私有密钥加密)的数据过去。l 服务端用私有密钥解密加密后的随机数据并协商暗号Server验证完client的身份之后,然后用自己的私有密钥解密得到premastersecret然后双方利用这个premastersecret来共同协商,得到mastersecret(可理解为premastersecret为双方协商的暗号,然后使用这个暗号再协商一个mastersecret用来产生真正的会话密钥用来传输数据)以此来保证数据的决对安全。l 服务端跟客户端利用暗号生成

8、加密算法跟密钥key双方用mastersecret一起产生真正的sessionkey,这将是一个对称加密的key。这个key还可以用来验证数据完整性。双方再交换结束信息。握手结束。接下来双方就可以用协商好的算法和密钥key,采用对称加密算法来通信了。6、 算法说明:利用java中的KeyGenerator类创建对称秘钥,利用工厂类KeyGenerator的静态方法getInstance()获得KeyGenerator()类对象; 方法getInstance()的参数为字符串类型,指定加密算法的名称如:Blowfish、DES、DESede、HmacMD5或HmacSHA1等;利用工厂类Ciph

9、er的对象可以创建密码器。同样的,getInstance()的参数为字符串类型,指定加密算法的名称。六、附录代码Ceaser.javaimport java.util.Scanner;public class Ceaser private String mingwen;/明文private char plain;private String miwen = ;/密文private int Key;/密钥private int n = 5;/字母表起始编码public Ceaser(String mingwen, int Key)this.mingwen = mingwen;int m = mi

10、ngwen.length();plain = new charm;for(int i = 0; i 95)Key = Key%95;this.Key = Key;public String miwen()int m = plain.length;char Str;for(int i = 0; i = 32 & Str =126)Str = (char)(Str + Key - n)%95 + n);if(Str 126)Str -= 95;miwen += Str;return miwen;class Decipheringprivate String miwen;private int n

11、= 5;/字母表起始编码private int Key;public Deciphering(String miwen, int key)this.miwen = miwen;if(Math.abs(key) 95)key = key%95;this.Key = key;public String decipherProcess()int l = miwen.length();char encrypt = new charl;char Str;String mingwen = ;for(int i = 0; i l; i+)encrypti = miwen.charAt(i);for(int

12、i = 0; i = 32 & Str =126)Str = (char)(Str - Key - n)%95 + n);if(Str 126)Str -= 95;mingwen += Str;return mingwen;Servers.javaimport java.awt.EventQueue;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.Da

13、taOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import .ServerSocket;import .Socket;/import .*;import java.util.Random;import javax.swing.*;public class Servers /* * param args */ private ServerSocket server = null; private Socket socket = null; private ServerSocket server1 = null; private Socket socket1 = null; private DataOutputStream out = null; private DataInputStream in = null; private DataOutputStream out1 = null; private DataInputStream in1 = n

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号