2017-2018-2 20165215 實驗五 網絡編程與安全
實驗報告封面
![](http://static.javashuo.com/static/loading.gif)
實驗內容
網絡編程與安全-1
1. 任務詳情:html
兩人一組結對編程:java
- 參考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA
- 結對實現中綴表達式轉後綴表達式的功能 MyBC.java
- 結對實現從上面功能中獲取的表達式中實現後綴表達式求值的功能,調用MyDC.java
- 上傳測試代碼運行結果截圖和碼雲連接
2. 相關知識點git
- 算符優先法求解表達式:(生成後綴表達式+後綴表達式求值)
![](http://static.javashuo.com/static/loading.gif)
- 步驟2
- 設操做數棧OPND,置空;運算符棧OPTR,最低符號#壓進OPTR;
- 讀入字符C,C如果操做數, 進OPND;如果運算符,與OPTR棧頂元素(A)比較,根據算符優先級,決定如何處理:
- A<C, C壓入OPTR棧;
- A=C, A從OPTR出棧;
- A>C,A出棧,從OPND依次彈出兩個操做數y、x, 計算Z=x A y,Z壓入OPND棧。C壓進OPTR.
- 重複上一步,直至表達式結束。
3. 實驗截圖算法
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
4. 碼雲連接編程
網絡編程與安全-2
1. 任務詳情:數組
結對編程:1人負責客戶端,一人負責服務器安全
- 注意責任歸宿,要會經過測試證實本身沒有問題
- 基於Java Socket實現客戶端/服務器功能,傳輸方式用TCP
- 客戶端讓用戶輸入中綴表達式,而後把中綴表達式調用MyBC.java的功能轉化爲後綴表達式,把後綴表達式經過網絡發送給服務器
- 服務器接收到後綴表達式,調用MyDC.java的功能計算後綴表達式的值,把結果發送給客戶端
- 客戶端顯示服務器發送過來的結果
- 上傳測試結果截圖和碼雲連接
2. 相關知識點服務器
- 當兩個程序須要通訊時,它們能夠經過使用Socket類創建套接字對象並鏈接在一塊兒(端口號和IP地址的組合得出一個網絡套接字)
- Socket類的構造方法爲Socket(String host, int port),參數host是服務器的IP地址,port是端口號
- ServerSocket 的構造方法是 ServerSocket(int port),port 是一個端口號
- 可使用方法accept()將客戶端的套接字和服務器端的套接字鏈接起來
- 從套接字鏈接中讀取數據與從文件中讀取數據有着很大的不一樣,從文件中讀取數據時,全部的數據都已經在文件中了,而使用套接字鏈接時,可能在另外一端數據發送以前,就已經開始讀取了
- 注意accept方法也會阻塞線程的執行,直到接收到客戶的呼叫
3. 實驗截圖網絡
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
4. 碼雲連接測試
網絡編程與安全-3
1. 任務詳情:
加密結對編程:1人負責客戶端,一人負責服務器
- 注意責任歸宿,要會經過測試證實本身沒有問題
- 基於Java Socket實現客戶端/服務器功能,傳輸方式用TCP
- 客戶端讓用戶輸入中綴表達式,而後把中綴表達式調用MyBC.java的功能轉化爲後綴表達式,把後綴表達式用3DES或AES算法加密後經過網絡把密文發送給服務器
- 服務器接收到後綴表達式表達式後,進行解密(和客戶端協商密鑰,能夠用數組保存),而後調用MyDC.java的功能計算後綴表達式的值,把結果發送給客戶端
- 客戶端顯示服務器發送過來的結果
- 上傳測試結果截圖和碼雲連接
2. 參考資料
AES加密示例
3. 實驗截圖
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
4. 碼雲連接
網絡編程與安全-4
1. 任務詳情:
密鑰分發結對編程:1人負責客戶端,一人負責服務器
- 注意責任歸宿,要會經過測試證實本身沒有問題
- 基於Java Socket實現客戶端/服務器功能,傳輸方式用TCP
- 客戶端讓用戶輸入中綴表達式,而後把中綴表達式調用MyBC.java的功能轉化爲後綴表達式,把後綴表達式用3DES或AES算法加密經過網絡把密文發送給服務器
- 客戶端和服務器用DH算法進行3DES或AES算法的密鑰交換
- 服務器接收到後綴表達式表達式後,進行解密,而後調用MyDC.java的功能計算後綴表達式的值,把結果發送給客戶端
- 客戶端顯示服務器發送過來的結果
- 上傳測試結果截圖和碼雲連接
2. 參考資料
密鑰交換算法DH(Java實現)
3. 實驗截圖
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
4. 碼雲連接
網絡編程與安全-5
1. 任務詳情:
完整性校驗結對編程:1人負責客戶端,一人負責服務器
- 注意責任歸宿,要會經過測試證實本身沒有問題
- 基於Java Socket實現客戶端/服務器功能,傳輸方式用TCP
- 客戶端讓用戶輸入中綴表達式,而後把中綴表達式調用MyBC.java的功能轉化爲後綴表達式,把後綴表達式用3DES或AES算法加密經過網絡把密文和明文的MD5値發送給服務器
- 客戶端和服務器用DH算法進行3DES或AES算法的密鑰交換
- 服務器接收到後綴表達式表達式後,進行解密,解密後計算明文的MD5值,和客戶端傳來的MD5進行比較,一致則調用MyDC.java的功能計算後綴表達式的值,把結果發送給客戶端
- 客戶端顯示服務器發送過來的結果
-上傳測試結果截圖和碼雲連接
2. 參考資料
Java 密碼學算法
3. 實驗截圖
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
4. 碼雲連接
PSP(Personal Software Process)時間統計:
需求分析 |
30min |
9.09% |
設計 |
90min |
18.1% |
代碼實現 |
120min |
36.3% |
測試 |
60min |
18.1% |
分析總結 |
30min |
9.09% |
實驗小結
本次實驗大量運用到以前的知識,特別是教材第十三章《Java網絡編程》與Java密碼學部分,在實驗過程當中,我不只複習鞏固了以前的知識點,還更進一步地掌握瞭如何將它們融會貫通。