標籤:
第4次實驗
實 驗 報 告
課程:Java 班級: 1353 姓名:王亦可 學號:20135326
成績: 指導教師:婁嘉鵬 實驗日期:2015.6.9
實驗密級: 預習程度: 實驗時間:15:30~18:00
儀器組次:26 必修/選修:選修 實驗序號:04
實驗名稱: 網路編程與安全
實驗目的與要求:
1.掌握Java網路編程的方法;
2.掌握Java安全編程的方法;
3.能綜合使用各種技術。
實驗儀器:
實驗內容:
1 編寫網路通訊程式(基於TCP)
2 對通訊內容使用對稱式加密演算法進行加密
3 使用非對稱演算法分發對稱式加密中使用的密鑰
4 對通訊內容進行摘要計算並驗證
5 其他安全措施
相關代碼
用戶端:
package net;
import java.math.*;
import java.net.*;
import java.io.*;
public class tcpused {
public static void main(String srgs[]) {
try {
//建立串連特定伺服器的指定連接埠的Socket對象
Socket socket = new Socket("10.0.6.143", 2224);
//獲得從伺服器端來的網路輸入資料流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//獲得從用戶端向伺服器端輸出資料的網路輸出W流
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
//建立鍵盤輸入資料流,以便用戶端從鍵盤上輸入資訊eredWriter(new OutputStreamWriter(socket.getOutputStream())), true);
//建立鍵盤輸入資料流
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
System.out.print("請輸入待發送的資料:");
String s = stdin.readLine(); //從鍵盤讀入待發送的資料
String cs = new SEnc().enc(s);
System.out.println("發送到伺服器的密文為:" + cs);
// String t=Read.read();
String ck = new Enc_RSA().Enc();
System.out.println("發送到伺服器的加密秘鑰為:" + ck);
String result = DigestCalc.hash(s);
out.println(ck);
out.println(cs); //通過網路傳送到伺服器
out.println(result);
} catch (Exception e) {
System.out.println(e);
} finally {
//stdin.close();
//in.close();
//out.close();
//socket.close();
}
}
}
伺服器:
package net;
import java.net.*;
import java.io.*;
public class tcpuse {
public static void main(String srgs[]) throws Exception {
ServerSocket sc = null;
Socket socket = null;
try {
sc = new ServerSocket(2224);//建立伺服器通訊端
System.out.println("連接埠號碼:" + sc.getLocalPort());
System.out.println("伺服器已經啟動...");
socket = sc.accept(); //等待用戶端串連
System.out.println("已經建立串連");
//獲得網路輸入資料流對象的引用
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
////獲得網路輸出資料流對象的引用
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
String key = in.readLine();
System.out.println("從用戶端收到的加密秘鑰為:" + key);
byte[] keykb = new Dec_RSA().Dec(key);
String ctext = in.readLine();//讀取用戶端傳送來的資料
System.out.println("從用戶端收到的密文為:" + ctext);
String result=SDec.des(ctext, keykb);
String ha = in.readLine();
String sa = DigestCalc.hash(result);
boolean q = Compare.compare(sa, ha);
System.out.println("程式是否完整:" + q);
out.close();
in.close();
sc.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
用戶端:
服務端:
連結查看
統計時間
步驟 |
耗時(min) |
百分比 |
需求分析 |
10 |
10% |
設計 |
20 |
20% |
代碼實現 |
40 |
40% |
測試 |
10 |
10% |
分析總結 |
20 |
20% |
二、實驗中遇到的問題及其解決方案
在建立伺服器後,用戶端無法連結而出現的拒絕訪問
解決方案:調整端點名保持一樣
實驗人員:
伺服器 :20135226 黃坤
用戶端 :20135326王亦可 http://www.cnblogs.com/baka/
三、實驗體會
本次實驗遇到一些困難,特別是編程方面,其他的都還好
JAVA第四次實驗