2018-2019-2 20175215 實驗五《網絡編程與安全》實驗報告

1、實驗內容與步驟

1.任務一:兩人一組結對編程。

  • 任務要求
      1. 參考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA
      1. 結對實現中綴表達式轉後綴表達式的功能 MyBC.java
      1. 結對實現從上面功能中獲取的表達式中實現後綴表達式求值的功能,調用MyDC.java
      1. 上傳測試代碼運行結果截圖和碼雲連接
  • 任務過程
  • 程序代碼爲:
  • 任務截圖:

2.任務二:結對編程。

  • 1人負責客戶端,一人負責服務器。
      1. 注意責任歸宿,要會經過測試證實本身沒有問題
      1. 基於Java Socket實現客戶端/服務器功能,傳輸方式用TCP
      1. 客戶端讓用戶輸入中綴表達式,而後把中綴表達式調用MyBC.java的功能轉化爲後綴表達式,把後綴表達式經過網絡發送給服務器
      1. 服務器接收到後綴表達式,調用MyDC.java的功能計算後綴表達式的值,把結果發送給客戶端
      1. 客戶端顯示服務器發送過來的結果
      1. 上傳測試結果截圖和碼雲連接
  • 任務過程
  • 程序代碼爲:
    • Client.java
    • Server.java
    • MyDC.java
    • MyBC.java
    • 代碼詳情見碼雲連接
  • 運行截圖
    • 客戶端截圖
      html

    • 服務器截圖
      java

3.任務三:加密結對編程。

  • 任務要求:1人負責客戶端,一人負責服務器
      1. 注意責任歸宿,要會經過測試證實本身沒有問題
      1. 基於Java Socket實現客戶端/服務器功能,傳輸方式用TCP
      1. 客戶端讓用戶輸入中綴表達式,而後把中綴表達式調用MyBC.java的功能轉化爲後綴表達式,把後綴表達式用3DES或AES算法加密後經過網絡把密文發送給服務器
      1. 服務器接收到後綴表達式表達式後,進行解密(和客戶端協商密鑰,能夠用數組保存),而後調用MyDC.java的功能計算後綴表達式的值,把結果發送給客戶端
      1. 客戶端顯示服務器發送過來的結果
      1. 上傳測試結果截圖和碼雲連接
  • 任務過程:
  • 程序代碼爲:
    • Server2.java
    • Client2.java
    • Encoder.java
    • Skey_AES.java
    • MyDC.java
    • MyBC.java
    • 代碼詳情見碼雲連接
  • 運行截圖
    • 客戶端截圖
      git

    • 服務器截圖
      算法

注:任務四任務五創建在公鑰已由Key_DH.java生成好並傳輸給對方的前提下開始的。

4.任務四:密鑰分發結對編程。

  • 任務要求:1人負責客戶端,一人負責服務器
      1. 注意責任歸宿,要會經過測試證實本身沒有問題
      1. 基於Java Socket實現客戶端/服務器功能,傳輸方式用TCP
      1. 客戶端讓用戶輸入中綴表達式,而後把中綴表達式調用MyBC.java的功能轉化爲後綴表達式,把後綴表達式用3DES或AES算法加密經過網絡把密文發送給服務器
      1. 客戶端和服務器用DH算法進行3DES或AES算法的密鑰交換
      1. 服務器接收到後綴表達式表達式後,進行解密,而後調用MyDC.java的功能計算後綴表達式的值,把結果發送給客戶端
      1. 客戶端顯示服務器發送過來的結果
      1. 上傳測試結果截圖和碼雲連接
  • 任務過程:
  • 程序代碼爲:
    • Client3.java
    • Server3.java
    • Encoder.java
    • Key_DH.java
    • KeyAgree.java
    • MyDC.java
    • MyBC.java
  • 運行截圖:
    • 客戶端截圖
      編程

    • 服務器截圖
      數組

5.任務五:完整性校驗結對編程。

  • 任務要求:1人負責客戶端,一人負責服務器
      1. 注意責任歸宿,要會經過測試證實本身沒有問題
      1. 基於Java Socket實現客戶端/服務器功能,傳輸方式用TCP
      1. 客戶端讓用戶輸入中綴表達式,而後把中綴表達式調用MyBC.java的功能轉化爲後綴表達式,把後綴表達式用3DES或AES算法加密經過網絡把密文和明文的MD5値發送給服務器
      1. 客戶端和服務器用DH算法進行3DES或AES算法的密鑰交換
      1. 服務器接收到後綴表達式表達式後,進行解密,解密後計算明文的MD5值,和客戶端傳來的MD5進行比較,一致則調用MyDC.java的功能計算後綴表達式的值,把結果發送給客戶端
      1. 客戶端顯示服務器發送過來的結果
      1. 上傳測試結果截圖和碼雲連接
  • 任務過程:
  • 程序代碼爲:
    • Client4.java
    • Server4.java
    • Encoder.java
    • DigestPass.java(將老師所給的代碼DigestPass.java進行相應的修改,使其可以比較生成的消息摘要是否相同。)
    • Key_DH.java
    • KeyAgree.java
  • 運行截圖:
    • 客戶端截圖
      安全

    • 服務器截圖
      服務器

SP.碼雲連接

SP2.實驗中碰到的問題

1.結對夥伴使用jdk包版本不對的問題

  • 問題:導入如下兩個包出現錯誤
  • 問題解決:使用jdk包版本不對
    結對夥伴使用的是jdk11,而這兩個包是jdk8中的,所以出現上圖錯誤。

2.傳輸的被加密的密鑰與解密後原密鑰不對的問題

  • 問題:傳輸密鑰多此一舉的使用如下代碼以後傳輸,而不是直接使用key1(String)
String keyone= new String (a1);
        keyone = Encoder.AESEncode(sharekey,keyone);//客戶端對密鑰進行DH加密

致使下圖的問題
網絡

  • 問題解決:使用原來的密鑰加密後直接傳輸(主要問題在於新建的密鑰字符串相比於原來的密鑰少了一個空格)

SP3.參考資料

1.Java 密碼學算法
2.20165235 實驗五 網絡編程與安全
3.Java重寫equals方法(重點講解)測試

相關文章
相關標籤/搜索