2019 课程设计个人报告

课程设计个人报告 20165310 徐雯

一、个人贡献

  • 设计整体框架,整理所需实现功能
  • 根据计划进行程序设计
  • 实现程序设计所需代码,并进行调试
  • 寻找实现功能过程中所需参考资料并进行学习

二、设计问题与解决方法

  • 调用OpenSSL生成用户公私钥依赖于外部环境,我们希望能够实现代替用户生成的功能
    • 利用bouncycastle封装的类生成RSA、ECC、SM2的公私钥对
    • 为了用户与证书正常使用,所生成的公私钥需要能够在本地保存
  • 应该实现B/S还是C/S架构
    • 考虑到密钥保存方便选择了C/S架构
    • 但是发现参数传递B/S架构更加方便,只是时间来不及调整,如果有机会可以加以改进。

三、调试过程问题与解决方法

  • 很少有有关ECC与SM2的证书生成的资料,底层开始实现时间不足且编码过于复杂
    • 找到bouncycastle的集成封装,1.57及更高版本实现了SM2的密钥生成与证书生成功能。
    • 进行bouncycastle的语法学习,实现CA功能。
  • 三种类型的密钥保存在本地并且能够恢复进行使用
    • 利用Base64进行编码,生成.key文件并保存在本地。
    • 利用bouncycastle包的keyFactory进行解码,publicKeySpec为X509EncodedKeySpec对公钥进行解码,利用privateKeySpec为PKCS8EncodedKeySpec对私钥进行解码。
  • 生成ECC证书失败,密钥读取报错
    • 调试生成密钥时的代码未完善时生成的ECC的密钥对,存在损坏,重新生成密钥对即可。
  • C/S进行Socket传输时,连续传输字节数组或先传送再读取出错。
    • 进行flush阻塞或开启新的socket进行传输

四、设计体会及收获

  • 本次项目还存在很大的不足,由于时间原因有一些细节与功能我们能够做的更好,但是现在只是基本实现其功能,在安全性、保密性等功能与证书存储、更新等存在进一步的思考与改进空间。
  • 本次项目我的Java自主编程能力有了提高,学会了CA的Java实现方式,对于CA、PKI、socket传输等有了更深的了解,对于项目架构、系统总体设计与代码具体实现的关系也有了新的体会。

五、参考资料

  • 密钥格式转换与保存:
    • java实现RSA的简单加密解密
    • 简单的RSA秘钥保存读取方式
  • CSR文件生成
    • Java生成CSR创建证书
  • CA证书签发
    • 基于BouncyCastle的ECDSA Key, CSR, Certificate Demo
    • Java下使用BouncyCastle制作证书
    • bouncycastle 产生证书

你可能感兴趣的:(2019 课程设计个人报告)