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傳輸時,連續傳輸字節數組或先傳送再讀取出錯。
4、設計體會及收穫
- 本次項目還存在很大的不足,因爲時間緣由有一些細節與功能咱們可以作的更好,可是如今只是基本實現其功能,在安全性、保密性等功能與證書存儲、更新等存在進一步的思考與改進空間。
- 本次項目個人Java自主編程能力有了提升,學會了CA的Java實現方式,對於CA、PKI、socket傳輸等有了更深的瞭解,對於項目架構、系統整體設計與代碼具體實現的關係也有了新的體會。
5、參考資料
- 密鑰格式轉換與保存:
- CSR文件生成
- CA證書籤發
歡迎關注本站公眾號,獲取更多信息