This is the implement of course named "Computer System Skills Training" of WHUT.
武汉理工大学(WHUT), 2020《计算机系统能力实训课程设计》 ———— "基于MD5加密的动态链接库设计与应用" 设计 + 源码.
-
GUI 界面
-
实现 软件注册 (register) 功能:
- 输入 注册码 进行注册(注册码:由DDL根据 硬盘硬件序列号 或 网卡 MAC 地址 加密生成)。
- 注册码错误不能注册。
- 其他计算机无论注册码是否正确,均不能注册,以保护软件版权。
idea: electron 实现跨平台应用;验证: MAC地址 不同,即使注册码相同,依然无法注册。
- 输入 注册码 进行注册(注册码:由DDL根据 硬盘硬件序列号 或 网卡 MAC 地址 加密生成)。
-
用户注册 (user Register) 功能:
实现用户注册功能,要求对应 用户名 以及加密后的 密码 写入到注册表,以供登录时读取验证。
-
登录 (login) 功能:
- 可以根据 用户名(userName)、密码(password) 登录.
- 调用 DLL 对 密码(password) 进行加密,并将 用户名(userName) 和 加密后密码(encrypted password) 写入 系统注册表(HKEY_LOCAL_MACHINE).
-
加密 (encrypt) 功能:
- 调用 DLL 对文本内容(text)进行加密。
- 实现方式:
- 手动输入 文本内容(text)。
- 打开txt、word获取相应文本内容(text)。
- 可以显示加密前、加密后文本内容(text)。
-
解密测试 (Decrypt Test):
- 利用在线加解密系统 测试 DLL 加密结果的正确性。
软件功能结构图:
-
实现方式:
Java 调用 C++ DDL.
-
算法:
- MD5,以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由4个32位分组组成,将这4个32位分组级联后将生成一个128位散列值.
- DES.
- AES.
-
DLL 设计及实现:
- 进程调用不属于其的可执行代码。
- 不同App可 同时 访问内存中的 DLL 的内容。
- 实现具有 MD5 加密接口的 DLL,提供对外调用的 加密接口 —— encrypt。
- 支持显示调用、隐式调用。
-
DLL 应用:
- 模拟用户登录加密.
- 软件注册码 进行版本管理(version control): Registration Code.
- 文本加密.
- 软件注册: register.
- 用户注册:userRegister.
- 登录: login.
- 首页: home.
主要 功能模块(functional module):
-
加密(encrypt):
输入文本:
-
文本框:手动输入。
-
上传按钮:选择.txt / .doc / .docx文件(目前仅支持.txt,可在 fork 后手动修改)。
-
显示:
显示加密前后文本内容。
-
-
总体设计:
总体设计分为三大部分:
-
C语言封装动态链接库 .dll 和 .so。
C语言实现MD5加密算法。
-
Java访问、读写注册表(registry);连接动态链接库DLL。
- 获取Mac网卡地址。
- 获取硬件硬件序列号。
- 连接dll接口。
- 编写project back end。
-
Electron框架封装Vue项目,实现跨平台应用。 1. 整合HTML、css、JavScript。 2. 编写project front end。 3. 实现跨平台桌面程序。
-
Part1: 软件注册、用户注册、登录
-
打开软件 → 输入软件注册码(MAC or Disk SN) → 验证注册码 → 注册用户账号 → 登录 → 登录成功!
程序流程如下:
Part2: 加密、解密测试
-
登录成功 → 加密 → 手动输入/上传 → 显示加密前、加密后的文本;
-
打开任意在线加密网站,输入文本,对比加密后的结果。
程序流程如下:
利用 yarn 安装 依赖 (depedency)
yarn install
yarn run serve
项目运行成功后,可执行以下命令,利用electron-builder打包项目(读者可自行查询electron的其他命令)
yarn run electron:build