2019 課程設計我的報告

課程設計我的報告 20165310 徐雯

1、我的貢獻

  • 設計總體框架,整理所需實現功能
  • 根據計劃進行程序設計
  • 實現程序設計所需代碼,並進行調試
  • 尋找實現功能過程當中所需參考資料並進行學習

2、設計問題與解決方法

  • 調用OpenSSL生成用戶公私鑰依賴於外部環境,咱們但願可以實現代替用戶生成的功能
    • 利用bouncycastle封裝的類生成RSA、ECC、SM2的公私鑰對
    • 爲了用戶與證書正常使用,所生成的公私鑰須要可以在本地保存
  • 應該實現B/S仍是C/S架構
    • 考慮到密鑰保存方便選擇了C/S架構
    • 可是發現參數傳遞B/S架構更加方便,只是時間來不及調整,若是有機會能夠加以改進。

3、調試過程問題與解決方法

  • 不多有有關ECC與SM2的證書生成的資料,底層開始實現時間不足且編碼過於複雜
    • 找到bouncycastle的集成封裝,1.57及更高版本實現了SM2的密鑰生成與證書生成功能。
    • 進行bouncycastle的語法學習,實現CA功能。
  • 三種類型的密鑰保存在本地而且可以恢復進行使用
    • 利用Base64進行編碼,生成.key文件並保存在本地。
    • 利用bouncycastle包的keyFactory進行解碼,publicKeySpec爲X509EncodedKeySpec對公鑰進行解碼,利用privateKeySpec爲PKCS8EncodedKeySpec對私鑰進行解碼。
  • 生成ECC證書失敗,密鑰讀取報錯
    • 調試生成密鑰時的代碼未完善時生成的ECC的密鑰對,存在損壞,從新生成密鑰對便可。
  • C/S進行Socket傳輸時,連續傳輸字節數組或先傳送再讀取出錯。
    • 進行flush阻塞或開啓新的socket進行傳輸

4、設計體會及收穫

  • 本次項目還存在很大的不足,因爲時間緣由有一些細節與功能咱們可以作的更好,可是如今只是基本實現其功能,在安全性、保密性等功能與證書存儲、更新等存在進一步的思考與改進空間。
  • 本次項目個人Java自主編程能力有了提升,學會了CA的Java實現方式,對於CA、PKI、socket傳輸等有了更深的瞭解,對於項目架構、系統整體設計與代碼具體實現的關係也有了新的體會。

5、參考資料

相關文章
相關標籤/搜索