團隊做業(五):衝刺總結

1、組員分工

學號 姓名 負責工做
20175217 吳一凡 RSA加密算法
20175225 張元瑞 DES加密算法
20175226 王鵬雲 DES加密算法
20175205 侯穎 前端
20175210 閔天 後端

2、項目完成步驟

1.RSA

2.DES

3.前端

(1)學習過程

4.後端

  • 安裝配置Tomcat

  • Tomcat目錄結構

 混合密碼通訊系統

5.總結

(1)總體思路

  • 1A產生一個公私鑰對,而後發送包含公鑰和A的標識符(郵箱)的消息給服務器。
  • 2服務器將A的信息(郵箱和公鑰)存入以郵箱爲主鍵的數據庫中。
  • 3B發送接收方的標識(郵箱)和明文給服務器。
  • 4服務器根據接收方的標識(郵箱)從數據庫中讀取公鑰。產生DESede祕鑰,用DESede祕鑰加密明文後,再用讀取的公鑰加密祕鑰,最後將密文和加密後的祕鑰發送至接收方郵箱。
  • 5接收方用私鑰解密。

(2)具體的功能

  • 1Mail.java 郵件的發送。我組直接用的qq郵箱的服務器。即 smtp.qq.com。具體的能夠參考這篇博客 java 實現郵件發送
  • 2RSA.java 與 DES.java 。爲避免錯誤,使用java標準庫中的類進行操做,方法藍墨雲班課上有。但混合密碼很重要的一點就是生成的祕鑰要用base64標準編碼,解密時先將祕鑰解碼,再用於解密。我組失敗了不少次,最後仍是這種辦法有效地解決了RSA解密出現亂碼的問題。
    除編碼的問題外,RSA不適用於加解密過長的數據,而在此項目中DESede的祕鑰也就168位,所以RSA.java 並不須要提供分塊加密(大文件的功能)。
  • 3Mysql.java 讀寫數據庫。將用戶id(郵箱)和其的公鑰存儲到數據庫中,郵箱做爲主鍵。這裏用到了mysql裏的 replace into 命令,這個命令的好處就是若是不存在此項就添加,存在就更新修改,這樣服務端更新公鑰就方便了。使用replace into 命令的更新功能要設定主鍵!
  • 4UploadPublicKey.java 。客戶端上傳文件到服務器,這是servlet 程序響應客戶端http請求的一個很好的體現。
  • 5GetShell.java 。服務器發送/shell裏的壓縮包到客戶端(這裏是web應用的根目錄),壓縮包裏有兩個腳本和一些java類。getRSAKey.sh 用於生成公鑰和私鑰,私鑰本身保管,公鑰上傳。decrypt.sh用於解密,但我不會寫腳本,致使成功運行此腳本解密的前提是 將密文,加密後的DESede祕鑰,私鑰,都放到腳本所在的文件夾下。
  • 6Encrypt.java。這個實現瞭如下幾個步驟:
    • 1獲取發送方從客戶端上傳的明文和發送方,接收方id(郵箱),根據雙方的ID在/WED-INF/uploadEncrypt目錄下建立一臨時目錄,將明文放置此目錄下。
       - 2根據接收方id,從數據庫中讀取公鑰。
       - 3生成一DESede祕鑰,用此加密明文。
       - 4用公鑰加密DESede祕鑰。
       - 5發送密文與加密後的祕鑰至接收方郵箱。
       - 6刪除臨時目錄。
      這裏其實有個很大的問題,就是若是接收方沒有往數據庫中提交過祕鑰,發送方並不會獲得提示。
      -7MixedEncrypt.java 實現6中的3,4步。

3、項目界面

4、碼雲連接

5、衝刺階段照片

相關文章
相關標籤/搜索