课程:Java程序设计实验 班级:1353 姓名:符运锦 学号:20135323
成绩: 指导教师:娄嘉鹏 实验日期:2015.6.9
实验密级:无 预习程度: 实验时间:15:30~18:00
仪器组次: 23 必修/选修: 选修 实验序号:5
实验名称:TCP传输及加解密
实验内容:
1.运行教材上TCP代码,结对进行,一人服务器,一人客户端;
2.利用加解密代码包,编译运行代码,一人加密,一人解密;
3.集成代码,一人加密后通过TCP发送;
注:加密使用AES或者DES/AES或者DES加密密钥key并发送,使用服务器的公钥加密/公钥算法使用RSA或DH/检验发送信息的完整性使用MD5或者SHA3;
4.完成Blog。
实验仪器:
名称
型号
数量
PC
SONY
1
虚拟机
实验楼
1
一.实验步骤
(一)在进行实验之前,我花出一定的时间了解了AES及DES算法的相关内容,并再将JAVA的一些常用的语句进行了一定的回顾,为本次实验奠定一定的基础。
我(20135323)在本次实验中主要负责客户端,我的搭档余佳源(20135321)负责服务器端,他的地址为:http://www.cnblogs.com/brotherlittlefish/
(二)回顾TCP
注:需要先运行服务器后再运行客户端
服务器端:
package chapter9;
import java.io.*;
import java.net.*;
public class ServerTest {
public static final int PORT=8080;
public static void main(String[] args)throws IOException{
ServerSocket s=new ServerSocket(PORT);
System.out.println("Started:"+s);
try{
Socket socket=s.accept();
try{
System.out.println("Connection accepted:"+socket);
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
while(true){
String str=in.readLine();
if(str.equals("END"))
break;
System.out.println("Echoing:"+str);
out.println(str);
}
}finally{
System.out.println("closing...");
socket.close();
}
}finally{
s.close();
}
}
}
运行结果:
客户端:
package chapter9;
import java.io.*;
import java.net.*;
public class ClientTest {
public static void main(String[] args)throws IOException{
InetAddress addr=InetAddress.getByName(null);
System.out.println("addr="+addr);
Socket socket=new Socket(addr,ServerTest.PORT);
try{
System.out.println("socket="+socket);
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
for(int i=0;i<10;i++){
out.println("howdy"+i);
String str=in.readLine();
System.out.println(str);
}
out.println("END");
}finally{
System.out.println("closing...");
socket.close();
}
}
}
运行结果: