密码学课程设计HBU-paperOline 2020-06-06

Posted 码不停Ti

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了密码学课程设计HBU-paperOline 2020-06-06相关的知识,希望对你有一定的参考价值。

HBU-paperOline

项目介绍

HBU-paperOline 项目是基于SpringBoot2的一整套后端管理平台,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、人事办公。旨在通过实战分享个人经验简洁高效,减少过渡封装,展现技术本质,以技术服务于业务。

演示项目 前后端Java SpringBoot + Thymeleaf 和 数据库mysql8.0 已部署于 腾讯云服务器

演示地址 http://mmx.hanxu51.cn:8083 已下架

  • 测试 教师端账号 teacher 密码 teacher

  • 测试 学生端账号 student 密码 student

代码 仓库https://gitee.com/hanxu051/hbu-paper-oline

项目模块

1. 项目功能

用户管理系统功能(UPMS)

  • 系统登录:系统用户登录,账号为admin/admin/admin123
  • 用户管理:新建用户,修改用户,删除用户,查询用户
  • 机构管理:新建机构,修改机构,删除机构,查询机构
  • 角色管理:新建角色,修改角色,删除角色,查询角色
  • 资源管理:新建资源,修改资源,删除资源,查询资源

论文管理系统功能(CMS)

论文管理中台

个人论文管理

技术说明

0.安全验证

1. 用户密码加盐存储

注册时 为每个用户生成一个盐 讲密码和盐一起存储到数据库

  String salt = RandomStringUtils.randomAlphanumeric(30);
  upmsUser.setSalt(salt);
  String password = upmsUser.getPassword() + salt;
  upmsUser.setPassword(MD5Utils.encrypt(upmsUser.getUsername(), password));

注册相关代码链接

登录时 将 密码+用户密码的盐 进行加密 判断和 数据库里的 密码是否一致

        //密码加盐
        password += user.getSalt();
        //验证用户信息
        password = MD5Utils.encrypt(username, password);
        UsernamePasswordToken token = new UsernamePasswordToken(username, password);
        Subject subject = SecurityUtils.getSubject();
        try 
            subject.login(token);

登录相关代码链接

数据库设计结构

2. 用户文件AES加密上传

采用 AES进行加密打包

文件上传业务逻辑相关代码链接

 // 加密文件
        try 
            String ZipName = NewfileName.substring(0, NewfileName.lastIndexOf('.')) + "new";
            FileUtil.zipFilesAndEncrypt(Path, NewfileName, ZipName, key);
         catch (Exception e) 
            e.printStackTrace();
        

文件AES加密压缩相关代码链接

ipParameters parameters = new ZipParameters();
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
if(!StringUtils.isEmpty(password))
    parameters.setEncryptFiles(true);
    parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
    parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
    parameters.setPassword(password);

ArrayList<File> filesToAdd = new ArrayList<File>();

3. 文件下载密码验证

文件下载时 会从数据库进行密码匹配 密码错误无法下载 论文文件

文件下载 支持 安全的 加密压缩包传输 和 普通的源文件 传输两种格式

由于使用 aes 加密打成了压缩包 查看压缩文件时需要输入 设置的密码

4. 文件一致性验证MD5特征码

文件上传成功之后 会利用 文件的字节码数据 生成一个 MD5 码特征值

我们可以 选择 本地下载的文件 验证 特征值是否一致

选择 刚刚下载好的文件 进行 源文件验证

我们发现 MD5码 是相同的 说明 文件是同一个文件 传输过程中 未发生篡改

文件验证 也可以通过 压缩包进行 文件验证

密码错误 或 文件不一致 会弹出相应提示

当压缩文件 和 文件密码 正确时 会弹出相应提示

我们会看到 本地 MD5 和云端 加密 MD5 值一致

2021年6月6日17:20:55 测试漏洞 bug登记:I3UIMK 链接

【bug】论文 表单提交后 文件验证 显示密码错误
前后台 数据交互存在 错误
后台判断逻辑需要从新 梳理
非 严重漏洞 修复排期预计在 七月学校课程结束后进行完善
(此功能经过测试 在 提交表单之后 进行压缩文件验证 会出现错误 源文件验证 功能正常 后续 我再进行修复)

5. 用户权限限制

项目设置了 普通学生 和 老师管理员 两种基本角色

学生拥有 个人论文 上传管理权限

教师拥有 角色 权限管理 用户管理 和 论文后台管理 相关权限

登录 学生角色账户 20181101051\\student

可以进入 个人论文管理 界面进行 个人论文的 添加 删除 和修改

学生可以看到 教师对论文的批改状态 并且 论文密码 不在前端页面做展示 做了密码保护

防止因 学生账号密码丢失造成的 论文信息泄露

教师用户 可以查看到 论文的 文件密码 并且可以 修改 论文状态

管理员 可以看到 论文所有者相关的 基础信息

学生 在个人论文 管理界面 只涉及自身 文件 不展示相关 信息

6. 教师创建学生

第一步、创建普通用户

在用户管理界面 进行学生的添加

填写学生 相关信息 并选择 所属机构

第二步、加入学生角色

角色 管理界面 选择 蓝色logo 的角色管理

进入学生 权限配置 页面

勾选需要 加入学生 角色的用户 选择提交

后端技术

技术版本说明官网
spring-boot2.3.4核心框架https://start.spring.io/
Apache Shiro1.4.2安全框架http://shiro.apache.org/
MyBatis1.3.2持久层框架http://mybatis.org/
PageHelper1.2.5MyBatis物理分页插件http://git.oschina.net/free/Mybatis_PageHelper
Alibaba Druid1.1.14数据库连接池https://druid.apache.org/
Thymeleaf2.0.0模板引擎https://www.thymeleaf.org/
Logback1.2.3日志管理http://logback.qos.ch
Swagger2.9.2API接口文档页面https://swagger.io/
Velocity1.7模板引擎http://velocity.apache.org/

2.前端技术

  • JS框架:jQuery、BootStrap
  • 弹出层:layer
  • 树结构控件:zTree
  • 数据表格:bootstrap-table

3.开发工具

  • MySql: 数据库
  • Tomcat: 应用服务器
  • Git: 版本管理
  • IntelliJ IDEA: 开发IDE
  • MySQLWorkbench: 数据库客户端

4.规范约束

  • 参考[阿里巴巴Java开发手册]

部署说明

1.运行环境

  • Jdk8+
  • Mysql5.5+

2.部署说明

运行前准备工作

1. 新建ming数据库,导入database文件夹下的 `upms_upload.sql`。[在线文件链接](https://gitee.com/hanxu051/hbu-paper-oline/blob/master/database/HBUPaperOnlie.sql)
2. 修改 `application.yml` 文件中的mysql数据库的用户名和密码。[在线文件链接](https://gitee.com/hanxu051/hbu-paper-oline/blob/master/ming-admin/src/main/resources/application-test.yml)

启动

登录

账户/密码
测试账号:admin/admin123
教师账户:teacher/teacher
学生账户:20181101051/student

系统演示截图

参与开发

以上是关于密码学课程设计HBU-paperOline 2020-06-06的主要内容,如果未能解决你的问题,请参考以下文章

密码学课程设计HBU-paperOline 2020-06-06

密码学课程设计HBU-paperOline 2020-06-06

课程设计第二十五天,09.12

JAVA课程设计,设计一个学生基本信息管理系统,有没有大佬可以帮我,急!!!!

密码学课程设计啊。大整数的设计和实现,求大神。发邮箱enjoy361684563@163.com 能通过的话继续加分

课程设计每日总结0827