zoukankan      html  css  js  c++  java
  • 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传输等有了更深的了解,对于项目架构、系统总体设计与代码具体实现的关系也有了新的体会。

    五、参考资料

  • 相关阅读:
    10、mysql序列使用、数据去重
    9、mysql临时表、复制表
    记一次FileOutputStream出现FileNotFoundException(stale file handle)的问题
    记一次ORACLE报ORA-02290: 违反检查约束条件错误
    TreeUtil---生成树状结构数据
    Redis
    Redis事务
    Redis工具类
    Nginx
    EasyExcel动态导出数据
  • 原文地址:https://www.cnblogs.com/atbaoi/p/10928703.html
Copyright © 2011-2022 走看看