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证书签发
欢迎关注本站公众号,获取更多信息