2018-2019-2 20175227張雪瑩《Java程序設計》實驗五 《網絡編程與安全》

2018-2019-2 20175227張雪瑩《Java程序設計》

實驗五 《網絡編程與安全》

實驗報告封面

  • 課程:Java程序設計 班級:1752班 姓名:張雪瑩 學號:20175227
  • 指導教師:婁嘉鵬 實驗日期:2019年5月25日
  • 實驗時間:--- 實驗序號:實驗五
  • 實驗名稱:網絡編程與安全
  • 實驗題目
  • 實驗要求
    • 完成雲班課中的檢查點,也能夠先完成實驗報告,直接提交。注意不能只有截圖,要有知識點,原理,遇到的問題和解決過程等說明。實驗報告中一個檢查點要有多張截圖。
    • 發表實驗報告博客,標題「學期(如2018-2019-2) 學號(如20175300)實驗五 Java網絡編程 實驗報告」

實驗步驟

  • 任務一
    • 要求:兩人一組結對編程:
      • 參考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA
      • 結對實現中綴表達式轉後綴表達式的功能 MyBC.java
      • 結對實現從上面功能中獲取的表達式中實現後綴表達式求值的功能,調用MyDC.java
      • 上傳測試代碼運行結果截圖和碼雲連接
    • 知識點
      • 中綴表達式、前綴表達式和後綴表達式
        • 表達式Exp = S1 + OP + S2(S1 ,S2是兩個操做數,OP爲運算符)有三種標識法:
        OP + S1 + S2 爲前綴表示法
        S1 + OP + S2 爲中綴表示法
        S1 + S2 + OP 爲後綴表示法
        • 例如:
        Exp = a * b + (c - d / e) * f
        前綴式: + * a b * - c / d e f
        中綴式: a * b + c - d / e * f
        後綴式: a b * c d e / - f * +
    • 表達式求值算法分兩步進行:①中綴轉後綴;②求後綴表達式的值。
    • 後綴表達式求值僞代碼以下:
    設置一個操做數棧,開始棧爲空;
    從左到右掃描後綴表達式,遇操做數,進棧;
    若遇運算符,則從棧中退出兩個元素,先退出的放到運算符的右邊,後退出的放到運算左邊,運算後的結果再進棧,直到後綴表達式掃描完畢。
    重複以上步驟,直至後綴表達式結束,棧中最後一個數字就是所求表達式的值。
    • 代碼
      5-1
    • 運行示例

  • 任務二
    • 要求:結對編程:1人負責客戶端,一人負責服務器
      • 注意責任歸宿,要會經過測試證實本身沒有問題
      • 基於Java Socket實現客戶端/服務器功能,傳輸方式用TCP
      • 客戶端讓用戶輸入中綴表達式,而後把中綴表達式調用MyBC.java的功能轉化爲後綴表達式,把後綴表達式經過網絡發送給服務器
      • 服務器接收到後綴表達式,調用MyDC.java的功能計算後綴表達式的值,把結果發送給客戶端
      • 客戶端顯示服務器發送過來的結果
      • 上傳測試結果截圖和碼雲連接
    • 知識點
      • 套接字是基於TCP協議的網絡通訊
        • 客戶端套接字
          • 對象創建方法:使用Socket類
          • Socket構造方法:Socket(String host,int port)
        • ServerSocket對象與服務器端套接字
          • 構造方法:ServerSocket(int port)
          • 使用方法accept()將客戶端的套接字和服務器端的套接字鏈接起來
      • 套接字通訊基本原則
        • 服務器應當啓動一個專門的線程,在該線程中和客戶的套接字創建鏈接
        • 因爲套接字的輸入流在讀取信息時可能發生阻塞,客戶端和服務器端都須要在一個單獨的線程中讀取信息
    • 代碼
      5-2
    • 運行示例

  • 任務三
    • 要求:加密結對編程:1人負責客戶端,一人負責服務器
      • 注意責任歸宿,要會經過測試證實本身沒有問題
      • 基於Java Socket實現客戶端/服務器功能,傳輸方式用TCP
      • 客戶端讓用戶輸入中綴表達式,而後把中綴表達式調用MyBC.java的功能轉化爲後綴表達式,把後綴表達式用3DES或AES算法加密後經過網絡把密文發送給服務器
      • 服務器接收到後綴表達式表達式後,進行解密(和客戶端協商密鑰,能夠用數組保存),而後調用MyDC.java的功能計算後綴表達式的值,把結果發送給客戶端
      • 客戶端顯示服務器發送過來的結果
      • 上傳測試結果截圖和碼雲連接
    • 知識點
      • DES算法是目前最經常使用的對稱加密算法
      • 實現DES加密主要有如下幾個步驟:
        • 對稱密鑰的生成和保存;
        • 使用對稱密鑰進行加密和解密;
        • 從文件中獲取加密時使用的密鑰,使用密鑰進行解密。
    • 代碼
      5-3
    • 運行示例

  • 任務四
    • 要求:密鑰分發結對編程:1人負責客戶端,一人負責服務器
      • 注意責任歸宿,要會經過測試證實本身沒有問題
      • 基於Java Socket實現客戶端/服務器功能,傳輸方式用TCP
      • 客戶端讓用戶輸入中綴表達式,而後把中綴表達式調用MyBC.java的功能轉化爲後綴表達式,把後綴表達式用3DES或AES算法加密經過網絡把密文發送給服務器
      • 客戶端和服務器用DH算法進行3DES或AES算法的密鑰交換
      • 服務器接收到後綴表達式表達式後,進行解密,而後調用MyDC.java的功能計算後綴表達式的值,把結果發送給客戶端
      • 客戶端顯示服務器發送過來的結果
      • 上傳測試結果截圖和碼雲連接
    • 知識點
      • 使用密鑰協定建立共享密鑰——DH算法
      • DH算法是創建在DH公鑰和私鑰的基礎上的
      • 實現DH算法主要有如下幾個步驟:
        • 建立DH公鑰和私鑰
        • 建立共享密鑰
    • 代碼
      5-4
    • 運行示例

  • 任務五
    • 要求:完整性校驗結對編程:1人負責客戶端,一人負責服務器
      • 注意責任歸宿,要會經過測試證實本身沒有問題
      • 基於Java Socket實現客戶端/服務器功能,傳輸方式用TCP
      • 客戶端讓用戶輸入中綴表達式,而後把中綴表達式調用MyBC.java的功能轉化爲後綴表達式,把後綴表達式用3DES或AES算法加密經過網絡把密文和明文的MD5値發送給服務器
      • 客戶端和服務器用DH算法進行3DES或AES算法的密鑰交換
      • 服務器接收到後綴表達式表達式後,進行解密,解密後計算明文的MD5值,和客戶端傳來的MD5進行比較,一致則調用MyDC.java的功能計算後綴表達式的值,把結果發送給客戶端
      • 客戶端顯示服務器發送過來的結果
      • 上傳測試結果截圖和碼雲連接
    • 知識點
      • Java摘要算法- MD5
        • java.security包中的MessageDigest類提供了計算消息摘要的方法
      • 生成MessageDigest對象:
        • MessageDigest m=MessageDigest.getInstance("MD5");
      • 傳入須要計算的字符串:
        • m.update(x.getBytes("UTF8" )); (x爲須要計算的字符串,update傳入的參數是字節類型或字節類型數組,對於字符串,須要先使用getBytes( )方法生成字符串數組。)
      • 計算消息摘要:
        • byte s[ ]=m.digest( ); (執行MessageDigest對象的digest( )方法完成計算,計算的結果經過字節類型的數組返回。)
    • 代碼
      5-5
    • 運行示例

結對夥伴及其博客連接

20175212html

相關文章
相關標籤/搜索