摘 要
本论文设计并实现一个电子邮件系统,采用客户端-服务器架构,使用 Python 编程语言结合 Django 框架和 MySQL 数据库进行开发。系统强调安全性与自主可控性,核心加密算法 AKCN-MLWE 和数字签名算法 FALCON 均由项目自行设计实现,不依赖任何现有密码库,具备抗量子计算攻击的能力。系统支持用户注册与登录、邮件信息管理、发送邮件管理、个人信息维护及密码修改等功能。管理员拥有最高权限,可对所有用户(包括普通用户和管理员)进行增删改查操作,全面管理邮件信息与发送记录,具备完整的后台控制能力。系统界面简洁、操作直观,适用于教学、科研或企业内部通信场景,具备良好的可扩展性与安全性,为构建安全可控的邮件平台提供了基础支撑。
关键词:电子邮件;Python;Django;MySQL数据库
Abstract
This thesis designs and implements an email system, adopting a client-server architecture, and is developed using the Python programming language combined with the Django framework and the MySQL database. The system emphasizes security and autonomous controllability. The core encryption algorithm AKCN-MLWE and the digital signature algorithm FALCON are both designed and implemented by the project itself. They do not rely on any existing cryptographic libraries and have the ability to resist quantum computing attacks. The system supports functions such as user registration and login, email information management, email sending management, personal information maintenance and password modification. Administrators have the highest authority and can perform operations such as adding, deleting, modifying, and querying on all users (including ordinary users and administrators), comprehensively manage email information and sending records, and possess complete background control capabilities. The system interface is simple and the operation is intuitive. It is suitable for teaching, scientific research or internal communication scenarios of enterprises, and has good scalability and security, providing basic support for building a secure and controllable email platform.
Key words: Email Python; Django MySQL database
目 录
1绪论
1.1 研究背景和意义
随着互联网技术的迅猛发展,电子邮件已成为人们日常生活和工作中不可或缺的信息交流工具。然而,传统的电子邮件系统在安全性方面存在诸多隐患,尤其是在当前网络安全威胁日益加剧以及量子计算快速发展的背景下,基于RSA、ECC等传统公钥密码体系的加密方式面临被量子计算机破解的风险。因此,构建一个安全邮件系统成为保障信息安全的重要方向。近年来,后量子密码学逐渐成为研究热点,其中基于格密码的AKCN-MLWE加密算法和FALCON数字签名算法因其高效性和安全性受到广泛关注。在此背景下,设计并实现一个采用新型抗量子密码算法的邮件系统具有重要的现实需求和技术前瞻性。
本项目的实施对于提升电子邮件系统的安全防护能力具有重要意义。首先,通过引入自研的AKCN-MLWE和FALCON算法,能够有效增强邮件传输过程中的机密性、完整性和身份认证能力,显著提升系统对抗未来量子计算攻击的能力。其次,该系统不仅适用于普通用户的日常通信,也可为金融、政务、军事等对数据安全要求较高的领域提供更加可靠的通信保障,具有广泛的应用前景。此外,项目在推动国产化密码技术发展、提高信息安全自主可控能力方面也具有积极意义,有助于加快后量子密码技术的实际落地与推广应用。
1.2 国内外研究现状
近年来,随着国家对信息安全的高度重视,我国在后量子密码学领域的研究取得了显著进展。中国密码管理局已启动多项抗量子密码算法的研究与标准化工作,并积极推动国产后量子密码算法的发展。部分高校和科研机构如中国科学院、清华大学、上海交通大学等在基于格密码(Lattice-based Cryptography)方面开展了深入研究,尤其在AKCN-MLWE、SM9等新型加密算法的设计与实现方面取得了一定成果。然而,在实际应用层面,国内将抗量子密码技术集成到电子邮件系统中的研究仍处于起步阶段,相关系统的开发多停留在理论分析或原型验证阶段,尚未形成成熟、可广泛应用的安全邮件解决方案。
国际上,美国国家标准与技术研究院(NIST)自2016年起启动了后量子密码标准化项目(NIST PQC Project),吸引了全球众多密码学者和机构参与,推动了包括FALCON、CRYSTALS-Kyber、Dilithium等一批优秀后量子密码算法的发展。其中,FALCON已被选为数字签名的标准候选之一,显示出良好的实用性和安全性。此外,国外已有部分安全通信项目尝试将后量子密码应用于加密通信系统中,如Open Quantum Safe等开源项目致力于构建支持抗量子算法的安全基础设施。相比之下,国外在后量子密码的实际应用与系统集成方面领先于国内,尤其在邮件系统、TLS协议等场景中已有初步探索,但仍处于推广和发展阶段。
1.3 论文组成结构
第一章是绪论,本文章的开头部分,对本题目的研究背景和意义及研究现状等一些做文字性的描述。
第二章研究了电子邮件系统所采用的开发技术和开发工具。
第三章是系统分析部分,包括系统总体需求描述、功能性角度分析系统需求、非功能性等各个方面分析系统是否可以实现。
第四章是系统设计部分,本文章的重要部分,提供了系统架构的详细设计和一些主要功能模块的设计说明。
第五章是系统的具体实现,介绍系统的各个模块的具体实现。
第六章在前几章的基础上对系统进行测试和运行。
最后对系统进行了认真的总结,以此对未来有一个新的展望。
2开发工具及相关技术介绍
2.1 B/S体系工作原理
B/S(Browser/Server)架构是一种基于浏览器和服务器的应用架构模式[1]。它以Web浏览器作为客户端,服务器端通过Web技术提供应用服务。客户端通过浏览器与服务器进行交互,用户无需安装专门的客户端应用程序,只需要通过互联网连接即可访问应用程序[1]。在B/S架构中,客户端主要承担用户界面的呈现和基本的输入输出功能,而核心的业务处理、数据存储等操作则由服务器端完成。这种架构的核心优势在于无需在每个客户端机器上安装或更新软件,只要用户的浏览器符合要求,就可以使用系统。
B/S(Browser/Server)架构是一种网络架构模型,其主要特点是客户端通过浏览器与服务器进行通信,所有的业务逻辑和数据处理都在服务器端完成,客户端仅负责展示数据。B/S架构本质上是一种客户端-服务器模式的变体,它通过将传统的C/S(Client/Server)架构中的客户端功能移到浏览器中,简化了客户端的开发和维护工作[2]。在B/S架构中,用户通过浏览器发送请求,浏览器负责展示从服务器获取的数据,服务器则处理请求并返回响应。该架构避免了安装和配置客户端软件的麻烦,也减少了对客户端硬件的依赖,适合于需要大规模部署和跨平台支持的应用系统。
2.2 Django框架介绍
Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因[3]。另外,在Django框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性[4]。Django 项目源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:
(1)用于创建模型的对象关系映射;
(2)为最终用户设计较好的管理界面;
(3)URL 设计;
(4)设计者友好的模板语言;
(5)缓存系统。
Django(发音:[`dʒæŋɡəʊ]) 是用python语言写的开源web开发框架(open source web framework),它鼓励快速开发,并遵循MVC设计。Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 。
Django 根据比利时的爵士音乐家Django Reinhardt命名,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。
由于Django在近年来的迅速发展,应用越来越广泛,被著名IT开发杂志SD Times评选为2013 SD Times 100,位列“API、库和框架”分类第6位,被认为是该领域的佼佼者。
2.3 Vue技术
Vue.js是一款用于构建用户界面的渐进式JavaScript框架,提供一种灵活而高效的方式来开发单页面应用(SPA)。Vue的设计理念是通过尽量简化开发过程,提供一种声明式的方式来构建用户界面[5]。Vue.js通过数据驱动的视图模型,允许开发者以声明式语法绑定数据与视图,使得应用的状态和界面表现更加简洁和可维护。它的核心思想是通过组件化开发将复杂的UI拆分为可重用的独立模块,从而提升了代码的模块化、可维护性和可扩展性。
Vue.js具备响应式数据绑定和虚拟DOM的特性。响应式数据绑定意味着当数据变化时,Vue会自动更新与之绑定的DOM元素,从而实现视图的实时更新。虚拟DOM则是Vue.js的一种优化手段,通过将对DOM的操作抽象为一个虚拟的DOM树来提高性能,减少实际DOM操作的开销[6]。Vue还提供了丰富的插件和工具,如Vue Router用于路由管理,Vuex用于状态管理,方便开发者构建复杂的前端应用。Vue的灵活性和简洁性使其成为现代Web开发中常用的前端框架之一。
2.4 MySQL数据库
MySQL是一种开源的关系型数据库管理系统(RDBMS),基于SQL(结构化查询语言)进行数据操作。作为一个被广泛使用的数据库系统,MySQL具有高度的性能、可扩展性和可靠性。MySQL使用表格结构来存储数据,每个表由多个列和行组成,数据通过SQL查询语言进行操作[7]。MySQL支持多种数据类型,如整数、浮动小数、字符串、日期等,以满足不同应用场景对数据存储的需求。在实际应用中,MySQL通常用于存储和管理结构化数据,通过索引、视图、触发器等功能提升数据查询的效率和数据的完整性。
MySQL支持ACID事务特性(原子性、一致性、隔离性、持久性),确保数据库操作的可靠性和数据的一致性。它还支持多种存储引擎,其中InnoDB是最常用的存储引擎,具备事务支持、行级锁定和外键约束等特性,适用于高并发、高可靠性的数据存储需求。MySQL可以通过主从复制、分区和分库分表等技术实现横向扩展,以应对大规模数据存储和高负载的应用需求。MySQL还具有灵活的权限管理机制,支持用户角色管理、细粒度的权限控制等,保障数据的安全性。
2.5 python语言
Python是一种简洁易读、跨平台且功能强大的编程语言。它拥有庞大而活跃的社区,提供了丰富的第三方库和框架,如NumPy、Pandas和Django,使开发人员能够快速构建各种应用程序[8]。Python在数据处理和科学计算方面表现出色,通过相关库和工具,可以进行数据分析、机器学习和科学计算等任务。此外,Python广泛应用于Web开发、自动化脚本、网络爬虫等领域,其多样性使其成为一个全能的编程语言。无论你是初学者还是有经验的开发者,Python的简单语法、跨平台性以及强大的社区支持都能为你提供高效、优雅和可靠的编程体验。总之,Python是一个强大而灵活的编程语言,深受开发人员喜爱,并在各个领域得到广泛应用。
3系统分析
3.1 可行性分析
在软件开发的过程中,可行性分析是至关重要的,它旨在评估问题的可行性,以便尽可能快地解决,同时也要考虑到不同的解决方案的优势和劣势,以及实施这些方案所带来的经济效益。通过对电子邮件系统的可行性分析,我们可以从技术、操作和经济三个方面来评估其可行性,从而为其提供有效的支持和保障。
3.1.1 技术可行性
本邮件系统的设计与实现基于当前成熟的技术栈,包括Python编程语言、Django框架以及MySQL数据库管理系统,这些技术的选择为系统的开发提供了坚实的基础,并确保了项目的高可行性和灵活性。
3.1.2 经济可行性
从经济角度来看,本邮件系统的开发与部署具有较高的可行性。首先,系统主要依赖于开源技术和平台,如Python、Django和MySQL,这些工具不仅免费使用,还拥有庞大的社区支持,可以有效降低软件许可费用和技术门槛。其次,由于采用了成熟的框架和技术栈,开发周期得以缩短,减少了人力成本和时间成本的投入。此外,系统的运维成本也相对较低,因为Django框架自带了强大的管理后台,简化了日常维护工作,并且基于云服务(如果选择)的弹性扩展能力,可以根据实际需求灵活调整资源,避免了初期过度投资硬件设施。对于用户而言,简洁易用的界面设计降低了培训成本,提高了工作效率。
3.1.3 操作可行性
本邮件系统在操作上具有良好的可行性,界面设计简洁直观,用户注册、登录及邮件管理等核心功能均通过图形化界面实现,操作流程清晰易懂,降低了使用门槛。系统支持多设备访问,并提供详细的帮助指引和错误提示,便于不同技术水平的用户快速上手,同时管理员后台功能完善,便于进行用户与邮件的统一管理,整体具备较强的实用性和可推广性。
3.2 功能需求分析
本文介绍的电子邮件系统基于Python语言开发,使用Django框架进行系统设计与实现,结合MySQL数据库进行数据存储。平台为两类用户(注册用户、管理员)提供了多样化且符合需求的功能。以下是对每个角色相关功能的详细分析。
1. 注册用户功能
注册: 用户填写账号、密码(加密存储)、昵称、邮箱地址(用于接收验证码或后续通信)进行注册。
登录: 输入账号、密码并输入验证码完成身份验证,登录成功后进入后台首页。
邮件信息管理: 支持查询:通过“用户姓名”、“用户性别”等字段筛选查看邮件信息列表详情;重置:清空当前查询条件;删除:删除单条或多条邮件记录。可添加邮件信息包括用户账号、姓名、年龄、性别、邮件地址、发送者、发送时间、发送内容等。
发送邮件管理: 支持查询:通过“用户姓名”、“用户年龄”、“用户性别”等字段搜索查询发送邮件列表;支持重置、删除操作。展示用户已发送的邮件列表详情,包含用户姓名、年龄、性别、邮件地址、发送用户、发送时间、发送内容等。
个人信息管理: 查看并修改个人信息如头像上传、用户昵称、当前状态(如在线、忙碌等)、其他基础信息。
修改密码: 输入旧密码。设置新密码;提交验证后更新数据库中的密码哈希值。
注册用户用例图如下所示。

图3-1 注册用户用例图
2. 管理员功能
登录: 使用管理员账号和密码登录;登录后进入管理员后台首页。
系统用户管理: 管理员可对所有用户进行增删改查操作,包括查看所有注册用户和管理员账户;添加/编辑用户信息(账号、密码、昵称、性别、邮箱等);删除用户及其关联邮件数据;修改用户角色(普通用户 / 管理员)。
邮件信息管理: 查看所有用户的邮件信息列表;支持添加新的邮件记录;可执行查询、重置、删除等操作。
发送邮件管理:查看所有已发送邮件的记录;按照不同用户属性(如姓名、年龄、性别)进行查询;支持重置和删除操作。
个人信息: 管理员可查看和修改自己的基本信息,如昵称、头像、状态等。
修改密码: 管理员可修改自己的登录密码;需验证原密码后设置新密码。
管理员用户用例图如下所示。

图3-2 管理员用例图
3.3 系统流程分析
3.3.1用户登录流程
用户输入用户名和密码后,系统首先检查输入是否为空。若为空,提示用户填写信息。接着,系统验证用户名是否存在。如果用户名存在,系统通过用户名查询相应的密码,并与输入的密码进行校验。如果密码正确,登录成功;如果密码错误,则提示密码错误。如果用户名不存在或无法验证用户信息,系统会提示“用户名不存在”或其他登录失败信息,要求用户重新输入。用户登录流程如图3-3所示。

图3-3登录流程图
3.3.2信息添加流程
用户登录系统后,选择要添加的信息类型,填写相应的信息表单并提交。系统对信息进行处理,并给予用户反馈结果。用户可以根据需要返回上级页面或继续操作。信息添加流程如图3-4所示。

图3-4信息添加流程图
3.3.3信息删除流程
用户登录系统后,导航至相应的信息管理功能入口。选择要删除的信息,并确认删除操作。系统进行删除处理,并给予用户反馈结果。用户可以根据需要返回上级页面或继续操作。信息删除流程如图3-5所示。

图3-5信息删除流程图
3.3.4 修改信息流程
用户首先选择需要修改的记录,输入修改后的数据,系统判断输入数据是否合法。若数据不合法,提示重新输入;若数据合法,则将修改后的数据写入数据库,完成操作后流程结束。修改信息流程图如图3-6所示。

图3-6修改信息流程图
3.4本章小结
本章对电子邮件系统的需求进行了详细分析和总结。用户和管理员各有不同的模块和功能。系统操作流程简单易懂,用户通过登录系统,选择功能入口,填写或选择相应信息,并提交操作。系统进行处理并反馈结果,用户可返回上级页面或继续操作。这些需求分析为后续系统设计和实现提供了基础。
4系统设计
4.1 系统架构设计
基于电子邮件系统的架构设计包括客户端、服务器端、第三方集成、安全性和权限控制、扩展性和性能优化、高可用性和容错性等方面。客户端通过Web浏览器或移动应用程序访问系统,而服务器端负责接收和处理请求,并提供功能和数据。系统采用分层架构,包括表现层、业务逻辑层、数据访问层和数据库。同时,系统需考虑与其他系统的集成、安全性和权限控制、扩展性和性能优化、高可用性和容错性等方面的问题。这样的架构设计将确保系统的稳定性、可扩展性和安全性,为用户提供稳定、高效的使用体验。系统架构图如下图所示。

图4-1 系统架构图
4.2 系统功能结构
系统功能结构是将一个系统的各种功能以有组织、结构化的方式描述和组织的过程。它涉及系统中不同组成部分之间的相互关系和交互作用,以及它们如何协同实现整体目标。系统功能结构对于确保系统正常运行和高效性至关重要。系统的功能结构图如下所示。

图4-2 系统功能结构图
4.3 数据库设计
数据库设计是指在构建和组织数据库系统时,根据实际需求和目标,进行数据模型的设计和规划的过程。它涉及到确定数据库中的表、字段、关系以及约束等方面的设计决策。
4.3.1 数据库实体设计
数据库实体设计是数据库设计的关键步骤,对实际业务逻辑中涉及的实体及其属性进行抽象建模,明确系统中的主要信息对象及其关系。在实体设计中,根据需求分析确定系统的核心实体,如用户、角色、权限等,提取实体的主要属性,如用户的ID、姓名、联系方式,名称、类型等,同时定义各实体之间的关系,包括一对一、一对多、多对多等。在设计过程中,注重实体的完整性、规范性和唯一性,确保设计能够满足系统功能需求,并为后续的表设计提供清晰的结构框架。实体设计需遵循数据库设计的标准化要求,避免数据冗余和不必要的复杂度。
下面是整个系统中主要的数据库表总E-R实体关系图。

图4-3 系统E-R图
4.3.2 数据库表设计
数据库表设计基于实体设计,将抽象的实体映射为具体的表结构。设计过程中,为每个实体定义表名、字段名及数据类型。根据业务需求,合理定义主键、外键及约束条件,确保表之间的关联性,例如通过外键建立用户表和角色表之间的关系。表设计时注重数据存储的完整性、一致性,并通过索引优化查询效率,最终确保数据库结构能够支持系统的功能需求。以下是系统的数据库表设计展示。
表 4-1-access_token(登陆访问时长)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | token_id | int | 是 | 是 | 临时访问牌ID | |
| 2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
| 3 | info | text | 65535 | 否 | 否 | 信息 |
| 4 | maxage | int | 是 | 否 | 最大寿命:默认2小时 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | user_id | int | 是 | 否 | 用户编号 |
表 4-2-auth(用户权限管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | auth_id | int | 是 | 是 | 授权ID | |
| 2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
| 3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
| 4 | table_name | varchar | 64 | 否 | 否 | 表名 |
| 5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
| 6 | path | varchar | 255 | 否 | 否 | 路由路径 |
| 7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
| 8 | parent_sort | int | 是 | 否 | 父级菜单排序 | |
| 9 | position | varchar | 32 | 否 | 否 | 位置 |
| 10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
| 11 | add | tinyint | 是 | 否 | 是否可增加 | |
| 12 | del | tinyint | 是 | 否 | 是否可删除 | |
| 13 | set | tinyint | 是 | 否 | 是否可修改 | |
| 14 | get | tinyint | 是 | 否 | 是否可查看 | |
| 15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
| 16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
| 17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
| 18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
| 19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
| 20 | option | text | 65535 | 否 | 否 | 配置 |
| 21 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 22 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-3-code_token(验证码)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | code_token_id | int | 是 | 是 | 验证码ID | |
| 2 | token | varchar | 255 | 否 | 否 | 令牌 |
| 3 | code | varchar | 255 | 否 | 否 | 验证码 |
| 4 | expire_time | timestamp | 是 | 否 | 失效时间 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-4-hits(用户点击)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | hits_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 否 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID |
表 4-5-mail_message(邮件信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | mail_message_id | int | 是 | 是 | 邮件信息ID | |
| 2 | sender_account_number | int | 否 | 否 | 发件人账号 | |
| 3 | recipient_account_number | int | 否 | 否 | 收件人账号 | |
| 4 | sending_personnel | varchar | 125 | 否 | 否 | 发送人员 |
| 5 | recipient | varchar | 125 | 否 | 否 | 收件人员 |
| 6 | subject_name | varchar | 64 | 否 | 否 | 主题名称 |
| 7 | body_content | longtext | 4294967295 | 否 | 否 | 正文内容 |
| 8 | create_time | datetime | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-6-registered_user(注册用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | registered_user_id | int | 是 | 是 | 注册用户ID | |
| 2 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 3 | user_age | double | 否 | 否 | 用户年龄 | |
| 4 | user_gender | varchar | 64 | 否 | 否 | 用户性别 |
| 5 | sending_personnel | varchar | 125 | 否 | 否 | 发送人员 |
| 6 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 7 | user_id | int | 是 | 否 | 用户ID | |
| 8 | create_time | datetime | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-7-upload(文件上传)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | upload_id | int | 是 | 是 | 上传ID | |
| 2 | name | varchar | 64 | 否 | 否 | 文件名 |
| 3 | path | varchar | 255 | 否 | 否 | 访问路径 |
| 4 | file | varchar | 255 | 否 | 否 | 文件路径 |
| 5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
| 6 | father_id | int | 否 | 否 | 父级ID | |
| 7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
| 8 | type | varchar | 32 | 否 | 否 | 文件类型 |
表 4-8-user(用户账户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | user_id | int | 是 | 是 | 用户ID | |
| 2 | state | smallint | 是 | 否 | 账户状态:(1可用|2异常|3已冻结|4已注销) | |
| 3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
| 4 | login_time | timestamp | 是 | 否 | 上次登录时间 | |
| 5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
| 6 | phone_state | smallint | 是 | 否 | 手机认证:(0未认证|1审核中|2已认证) | |
| 7 | username | varchar | 16 | 是 | 否 | 用户名 |
| 8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 9 | password | varchar | 64 | 是 | 否 | 密码 |
| 10 | | varchar | 64 | 否 | 否 | 邮箱 |
| 11 | email_state | smallint | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) | |
| 12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
| 14 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-9-user_group(用户组)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | group_id | mediumint | 是 | 是 | 用户组ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 名称 |
| 4 | description | varchar | 255 | 否 | 否 | 描述 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | register | smallint | 否 | 否 | 注册位置 | |
| 9 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-10-website_announcement(网站公告)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | website_announcement_id | int | 是 | 是 | 网站公告ID | |
| 2 | announcement_title | varchar | 64 | 否 | 否 | 公告标题 |
| 3 | cover_image | varchar | 255 | 否 | 否 | 封面图片 |
| 4 | release_time | datetime | 否 | 否 | 发布时间 | |
| 5 | announcement_content | longtext | 4294967295 | 否 | 否 | 公告内容 |
| 6 | create_time | datetime | 是 | 否 | 创建时间 | |
| 7 | update_time | timestamp | 是 | 否 | 更新时间 |
5系统实现
电子邮件系统的详细设计与实现主要是根据前面的需求分析和总体设计来设计页面并实现业务逻辑。主要从电子邮件系统界面实现、业务逻辑实现这两部分进行介绍。
5.1注册用户功能模块
5.1.1 注册界面
注册: 用户填写账号、密码(加密存储)、昵称、邮箱地址(用于接收验证码或后续通信)进行注册。注册界面如下图所示。

图5-1注册界面图
5.1.2登录界面
输入账号、密码并输入验证码完成身份验证,登录成功后进入后台首页。登录界面如下图所示。

图5-2登录界面图
5.1.3邮件信息管理
支持查询:通过“用户姓名”、“用户性别”等字段筛选查看邮件信息列表详情;重置:清空当前查询条件;删除:删除单条或多条邮件记录。可添加邮件信息包括用户账号、姓名、年龄、性别、邮件地址、发送者、发送时间、发送内容等。邮件信息管理页面如图5-3所示。

图5-3邮件信息管理界面图
5.1.4发送邮件管理
支持查询:通过“用户姓名”、“用户年龄”、“用户性别”等字段搜索查询发送邮件列表;支持重置、删除操作。展示用户已发送的邮件列表详情,包含用户姓名、年龄、性别、邮件地址、发送用户、发送时间、发送内容等。发送邮件管理界面如下图5-4所示。

图5-4发送邮件管理界面图
5.1.5个人信息
查看并修改个人信息如头像上传、用户昵称、当前状态(如在线、忙碌等)、其他基础信息。个人信息界面如下图5-5所示。

图5-5个人信息界面图
5.2管理员功能模块
5.2.1系统用户管理
管理员可对所有用户进行增删改查操作,包括查看所有注册用户和管理员账户;添加/编辑用户信息(账号、密码、昵称、性别、邮箱等);删除用户及其关联邮件数据;修改用户角色(普通用户 / 管理员)。系统用户管理界面如下图5-6所示。

图5-6系统用户管理界面图
5.2.2邮件信息管理
查看所有用户的邮件信息列表;支持添加新的邮件记录;可执行查询、重置、删除等操作。邮件信息管理界面如下图图5-6所示。

图5-6邮件信息管理界面图
6 系统测试
6.1测试目的
测试的主要目的是确保系统的功能和性能满足预期的需求,同时识别和修复潜在的缺陷。通过系统测试,可以验证各个功能模块的正确性和稳定性,确保系统在不同使用场景下的表现符合设计要求。测试目的包括确认系统功能的完整性、验证数据处理的准确性、评估系统的性能和安全性。测试还可以提高用户满意度,保证用户在使用系统时获得流畅和可靠的体验。通过全面的测试,可以降低后期维护成本,减少系统上线后出现故障的风险,从而保障系统的长期稳定运行。
6.2测试方法
在本系统中,测试方法主要依赖于测试用例的设计与执行。测试用例是根据系统需求文档编写的,覆盖所有功能模块及其边界情况。每个测试用例包含输入数据、预期结果和实际结果的对比,以验证系统的功能是否按预期工作。
常见的测试用例包括功能测试用例、边界测试用例和异常测试用例。功能测试用例针对系统的各项功能进行验证;边界测试用例则侧重于输入数据的边界条件,验证系统在极端情况下是否能够稳定运行;异常测试用例则用于验证系统在处理错误输入或异常情况时的反应。本文选择功能测试用例进行系统测试。
在测试执行过程中,记录每个用例的执行结果,并根据实际结果与预期结果的对比,判断系统是否存在缺陷。通过系统化的测试用例执行,可以有效提高测试的覆盖率和效率,为系统的最终上线提供保障。
6.3测试内容
系统的测试用例表格如下图所示:
| 测试项 | 测试用例 | 问题 | 结论 |
| 登录功能测试 | 打开登录页面,输入正确的用户名和密码,点击“登录”按钮 | 无 | 符合预期 |
| 打开登录页面,输入错误的用户名,输入正确的密码,点击“登录”按钮 | 无 | 符合预期 | |
| 打开登录页面,输入正确的用户名,输入错误的密码,点击“登录”按钮 | 无 | 符合预期 | |
| 打开登录页面,输入不存在的用户名和密码,点击“登录”按钮 | 无 | 符合预期 | |
| 注册功能测试 | 打开注册页面,输入合法的用户名、密码、邮箱等信息,点击“注册”按钮 | 无 | 符合预期 |
| 打开注册页面,输入已存在的用户名,输入其他合法信息,点击“注册”按钮 | 无 | 符合预期 | |
| 打开注册页面,输入合法用户名但密码不符合要求(如长度不足),点击“注册”按钮 | 无 | 符合预期 | |
| 打开注册页面,输入合法用户名和密码但邮箱格式错误,点击“注册”按钮 | 无 | 符合预期 | |
| 邮件信息管理功能测试 | 登录系统后,进入邮件信息管理页面,查看所有邮件列表 | 无 | 符合预期 |
| 在邮件信息管理页面中,通过用户姓名搜索邮件 | 无 | 符合预期 | |
| 在邮件信息管理页面中,通过用户性别筛选邮件 | 无 | 符合预期 | |
| 在邮件信息管理页面中,不输入任何条件直接点击搜索,显示全部邮件 | 无 | 符合预期 | |
| 在邮件信息管理页面中,选择一条或多条邮件进行删除操作 | 无 | 符合预期 | |
| 查看某封邮件的详细信息,包括发件人、收件人、发送时间、内容等 | 无 | 符合预期 | |
| 个人信息管理测试 | 修改个人信息(如昵称、头像、状态等) | 无 | 符合预期 |
6.4测试结果
经过对电子邮件系统的全面测试,涵盖了登录注册、邮件信息管理及个人信息维护等核心功能,所有测试用例均按照预期执行,系统功能运行正常,界面操作流畅,数据处理准确,具备良好的安全性和稳定性,达到了设计要求。
7总结
本项目成功设计并实现了一个基于后量子密码技术的电子邮件系统,通过采用Python、Django框架以及MySQL数据库,构建了一个高效、安全且易于使用的邮件通信平台。系统不仅实现了用户注册登录、邮件收发等基础功能,还特别集成了AKCN-MLWE加密算法和FALCON数字签名算法,确保了邮件内容在传输过程中的机密性和完整性,有效抵御了潜在的量子计算攻击风险。此外,系统提供了全面的邮件信息管理功能,支持用户对邮件进行查询、筛选、删除等操作,并允许管理员对所有用户及邮件进行全面管理。经过一系列严格的测试验证,系统在功能性、安全性以及用户体验方面均表现良好,达到了预期的设计目标。总体而言,本项目为构建安全可靠的电子邮件系统提供了一个坚实的基础,并展示了后量子密码技术在实际应用中的巨大潜力。
参考文献
- 孙陆楠,周勇,刘晓东,等.基于B/S架构的试验数据分析系统设计与应用[J].电气传动,2024,54(07):93-96.
- 徐方亮,钱朝阳,李泉.基于B/S结构的电子邮件系统的设计与实现[J].数字技术与应用,2010,(06):137-138.
- 曹雪朋.基于Django的数据分析系统设计与实现[J].信息与电脑(理论版),2023,35(15):141-143.
- 郭显娥.Django实现ORM模型数据查询优化[J].山西大同大学学报(自然科学版),2019,35(03):27-31+36.
- 赵媛.基于Vue的Web系统前端性能优化分析[J].电脑编程技巧与维护,2024,(09):44-46.
- 秦冬.浅析Vue框架在前端开发中的应用[J].信息与电脑(理论版),2024,36(13):61-63.
- 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.
- 周洪斌,苗盼盼.基于Python的办公自动化应用[J].现代计算机,2023,29(21):114-117.
- Fredrick I .Efficient small file management in Hadoop distributed file system for enhanced e-government services[J].Technological Sustainability,2025,4(2):160-180.
- Mikhaylov M G ,Chernetsov M A .Review of Technologies for Ensuring Security and Protection of E-Mail Systems in a Scientific Organization[J].Automatic Documentation and Mathematical Linguistics,2025,58(Suppl 6):S373-S375.
- 叶雪洁,杨阳朝,李阳阳,等.大数据背景下的电子邮件系统发展研究[J].数字通信世界,2024,(04):40-42.
- 冯雪.国产加密电子邮件系统研究[J].网络安全技术与应用,2024,(01):30-33.
- 陈栩杉.国外电子邮件档案管理系统研究及启示[J].北京档案,2023,(06):43-46.
- 金绍彬.基于网络空间测量的电子邮件安全性分析技术研究[D].山东大学,2023.
- 董秀蕾.电子邮件系统用户准入和准出机制实践[J].医学教育管理,2022,8(S1):188-191.
- 于晨曦.基于插件的PC端加密电子邮件系统[D].西安电子科技大学,2022.
- 梁利,蔡先勇,李文杰,等.电子邮件系统安全技术要求标准应用[J].信息技术与标准化,2022,(05):76-78.
- 周权.基于国密算法的安全电子邮件系统[D].西安电子科技大学,2021.
- 汪凌锋,王中武,尹一桦.基于商用密码技术的电子邮件系统研究[J].通信技术,2021,54(05):1246-1250.
- 杨平平.电子邮件系统中密文检索算法研究[D].西北师范大学,2021.
致谢
在本项目的完成过程中,获得了来自多方面的支持与帮助,在此表示诚挚的感谢。特别感谢所有为项目提供技术指导和宝贵建议的专家们,正是他们的深刻见解和丰富经验,确保了系统设计的科学性和前瞻性。同时,对参与讨论、测试以及提出建设性意见的所有同事和朋友表达深深的谢意,他们的积极参与和反馈极大地提升了系统的稳定性和用户体验。此外,还应感谢开源社区提供的丰富资源和支持,使得能够基于现有的优秀框架和技术进行开发,大大缩短了研发周期并降低了成本。最后,感谢所有直接或间接为本项目作出贡献的人士,这份成果离不开每一个人的努力与付出。希望未来能继续携手合作,共同推动信息安全领域的进步与发展。
附录
系统核心代码设计
用户注册
注册页UserController.java,传入user对象,并将"user_id"、 "state"、 "user_group"、"login_time"、"phone"、"phone_state"、 "username"、"nickname"、"password"、"email"、"email_state"、"avatar"、"create_time"输入,重点是 "username"、"nickname"、"password"必须输入,通过获取username,数据库查询是否有该用户,如果存在,则提示“用户已存在”,否则执行将UserId置为空(数据库表中该字段已设置自动递增),代码如图所示。

图注册核心代码图
用户登录
登录页,首先传入"username"、"email"、"phone"、"password",用户可通过用户名、邮箱、手机号进行登陆,通过判断resultList来确定查询结果,然后执行查询用户组UserGroup,用户组里面不存在,依然报“用户不存在”,执行完以上代码,最后涉及到用户带有“审核”的,会查询examine_state(用户的审核状态),数据库表user_group中含有source_table和source_field进行查询,以上步骤完成,对输入的密码进行存储Token到数据库,匹对账号和密码,数据库中的AccessToken为令牌,用于身份认证,代码如图所示。

用户登录核心代码图
修改密码
修改密码,通过请求data,获取旧密码,并将新密码重新赋值,期间都是需要通过加密,代码如图所示。

修改密码核心代码图
修改数据
修改一个数据,原理与add基本一致,不同点在于通过readConfig()读取关键字,以及通过readQuery()获取URL后面?指定位置的标识,转成Map对象后,执行update操作,同样通过拼接的sql语句执行,执行过程读取query,toWhereSql()语句完成数据库操作,body为修改对象的值,代码如图所示。

修改数据核心代码图
删除数据
删除一条数据,通过readQuery(),获取URL后面的对象地址,删除FROM具体的table,query删除查询FindConfig语句,代码如图示。

图4-11删除数据核心代码图
获取列表
通过请求的参数获取列表数据,代码如图所示。

图获取列表核心代码图
图片上传
通过请求的参数获取列表数据,代码如图4-13所示。

图片上传核心代码图
请关注点赞+私信博主,免费领取项目源码
1153

被折叠的 条评论
为什么被折叠?



