zoukankan      html  css  js  c++  java
  • 团队作业(五):冲刺总结

    一、组员分工

    学号 姓名 负责工作
    20175217 吴一凡 RSA加密算法
    20175225 张元瑞 DES加密算法
    20175226 王鹏雲 DES加密算法
    20175205 侯颖 前端
    20175210 闵天 后端

    二、项目完成步骤

    1.RSA

    2.DES

    3.前端

    (1)学习过程

    (2)界面

    4.后端

    • 安装配置Tomcat

    • Tomcat目录结构

    混合密码通信系统

    5.总结

    (1)整体思路

    • 1A产生一个公私钥对,然后发送包含公钥和A的标识符(邮箱)的消息给服务器。
    • 2服务器将A的信息(邮箱和公钥)存入以邮箱为主键的数据库中。
    • 3B发送接收方的标识(邮箱)和明文给服务器。
    • 4服务器根据接收方的标识(邮箱)从数据库中读取公钥。产生DESede秘钥,用DESede秘钥加密明文后,再用读取的公钥加密秘钥,最后将密文和加密后的秘钥发送至接收方邮箱。
    • 5接收方用私钥解密。

    (2)具体的功能

    • 1Mail.java 邮件的发送。我组直接用的qq邮箱的服务器。即 smtp.qq.com。具体的可以参考这篇博客 java 实现邮件发送
    • 2RSA.java 与 DES.java 。为避免错误,使用java标准库中的类进行操作,方法蓝墨云班课上有。但混合密码很重要的一点就是生成的秘钥要用base64标准编码,解密时先将秘钥解码,再用于解密。我组失败了很多次,最后还是这种办法有效地解决了RSA解密出现乱码的问题。
      除编码的问题外,RSA不适用于加解密过长的数据,而在此项目中DESede的秘钥也就168位,因此RSA.java 并不需要提供分块加密(大文件的功能)。
    • 3Mysql.java 读写数据库。将用户id(邮箱)和其的公钥存储到数据库中,邮箱作为主键。这里用到了mysql里的 replace into 命令,这个命令的好处就是如果不存在此项就添加,存在就更新修改,这样服务端更新公钥就方便了。使用replace into 命令的更新功能要设定主键!
    • 4UploadPublicKey.java 。客户端上传文件到服务器,这是servlet 程序响应客户端http请求的一个很好的体现。
    • 5GetShell.java 。服务器发送/shell里的压缩包到客户端(这里是web应用的根目录),压缩包里有两个脚本和一些java类。getRSAKey.sh 用于生成公钥和私钥,私钥自己保管,公钥上传。decrypt.sh用于解密,但我不会写脚本,导致成功运行此脚本解密的前提是 将密文,加密后的DESede秘钥,私钥,都放到脚本所在的文件夹下。
    • 6Encrypt.java。这个实现了以下几个步骤:
      • 1获取发送方从客户端上传的明文和发送方,接收方id(邮箱),根据双方的ID在/WED-INF/uploadEncrypt目录下创建一临时目录,将明文放置此目录下。
         - 2根据接收方id,从数据库中读取公钥。
         - 3生成一DESede秘钥,用此加密明文。
         - 4用公钥加密DESede秘钥。
         - 5发送密文与加密后的秘钥至接收方邮箱。
         - 6删除临时目录。
        这里其实有个很大的问题,就是如果接收方没有往数据库中提交过秘钥,发送方并不会得到提示。
        -7MixedEncrypt.java 实现6中的3,4步。

    三、项目界面

    四、码云链接

    五、冲刺阶段照片

  • 相关阅读:
    docker安装nginx
    docker安装tomcat&部署javaweb程序
    linux/work
    Go语言入门篇-gRPC基于golang & java简单实现
    Go语言入门篇-jwt(json web token)权限验证
    Go语言入门篇-JSON&http调用
    Go语言入门篇-基本流程控制
    Go语言入门篇-基本类型排序和 slice 排序
    Go语言入门篇-高级数据类型
    Go语言入门篇-基本数据类型
  • 原文地址:https://www.cnblogs.com/rjxs/p/10964676.html
Copyright © 2011-2022 走看看