團隊做業(五):衝刺總結
1、組員分工
20175217 |
吳一凡 |
RSA加密算法 |
20175225 |
張元瑞 |
DES加密算法 |
20175226 |
王鵬雲 |
DES加密算法 |
20175205 |
侯穎 |
前端 |
20175210 |
閔天 |
後端 |
2、項目完成步驟
1.RSA
2.DES
3.前端
(1)學習過程





4.後端


混合密碼通訊系統
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、衝刺階段照片


歡迎關注本站公眾號,獲取更多信息