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步。

    三、项目界面

    四、码云链接

    五、冲刺阶段照片

  • 相关阅读:
    PAT (Advanced Level) Practice 1071 Speech Patterns (25分)
    PAT (Advanced Level) Practice 1070 Mooncake (25分)
    PAT (Advanced Level) Practice 1069 The Black Hole of Numbers (20分)
    PAT (Advanced Level) Practice 1074 Reversing Linked List (25分)
    PAT (Advanced Level) Practice 1073 Scientific Notation (20分)
    第一次冲刺个人总结01
    构建之法阅读笔记01
    人月神话阅读笔记01
    四则运算2
    学习进度条(软件工程概论1-8周)
  • 原文地址:https://www.cnblogs.com/rjxs/p/10964676.html
Copyright © 2011-2022 走看看