基于SM2和SM4混合加密的国密加密文件传输系统

基于SM2和SM4混合加密的国密加密文件传输系统 系统设计与实现仅供参考详细设计原理本系统采用基于文件敏感等级的自适应加密设计通过关键词匹配与文件特征分析实现文件分级并根据分级结果动态选择加密策略。在加密机制上系统采用 SM2 与 SM4 结合的混合加密方式以实现密钥安全与加密效率的平衡。同时引入 SM3 摘要算法实现完整性校验确保数据在存储和传输过程中未被篡改。在系统结构上采用模块化设计将界面层、业务逻辑层与密码算法层分离并通过多线程机制提升系统响应性能。此外通过设计统一的元数据封装结构使加密文件具备自描述能力提高系统的可扩展性与可维护性。项目文件目录crypto/sensitivity_classifier.py这个文件负责做“自动识别敏感等级”。识别策略分三层文件类型识别文件名关键词识别文本预览关键词匹配最终给出CORE核心敏感走SM2 SM4IMPORTANT重要敏感也走SM2 SM4NORMAL普通数据走SM4LOW低敏默认也可以走SM4crypto/sm2_cipher.py这个模块负责生成 SM2 密钥对保存和加载密钥用公钥加密 SM4 会话密钥用私钥解密 SM4 会话密钥crypto/hybrid_cipher.py这是整个系统的核心。它做的事是自动调用分类器按敏感等级决定加密策略CORE / IMPORTANTSM2 加密随机 SM4 密钥再用 SM4 加密文件内容NORMAL / LOW直接用固定或派生 SM4 密钥加密文件内容输出统一的.encrypted文件network/file_server.py这个是接收端。逻辑很简单监听端口接收文件名长度、文件名、文件大小、文件内容保存到指定目录支持回调把日志传给界面gui/widgets/crypto_widget.py这是加密页核心。功能有选择文件自动识别敏感等级显示策略和命中关键词一键加密一键解密加载公钥/私钥显示结果gui/widgets/transfer_widget.py这个页面负责启动服务端停止服务端选择发送文件填写目标 IP 和端口发送文件显示传输日志项目最终实现效果4.1 系统设计目标论文第四章节参考本系统面向文件安全保护与可视化管理场景设计并实现了一个基于 PyQt5 的国密文件加密系统。系统结合文件敏感等级识别、国密算法加密、完整性校验、文件传输、密钥管理和实验统计等功能形成一个较完整的桌面端安全应用。本系统的设计目标主要包括以下几个方面。第一系统应具备文件敏感等级自动识别能力。对于不同类型和不同敏感程度的文件系统需要能够依据关键词匹配和文件类型特征进行分级并根据分级结果自动选择相应的加密策略。第二系统应具备较高的安全性。在核心敏感文件保护中采用 SM2 与 SM4 结合的混合加密方式以保证密钥交换安全和数据加密效率在普通文件保护中采用 SM4 轻量化加密策略以兼顾安全性与执行效率。同时为了保证数据在存储和传输过程中的完整性系统引入 SM3 摘要算法进行完整性校验。第三系统应具备较好的可用性与交互性。系统采用 PyQt5 构建图形化界面通过登录页、左侧导航、进度条、日志面板和结果显示区域为用户提供较直观的操作体验。加密、解密和文件发送等耗时任务通过多线程实现避免界面卡顿。第四系统应具备一定的扩展能力。在整体架构上将敏感识别、加密算法、文件传输、日志处理、界面展示和实验统计等模块分离实现模块化设计便于后续功能迭代和维护。4.2 系统总体设计4.2.1 系统总体架构本系统采用分层与模块化相结合的结构设计。按照功能划分系统主要由以下几层组成表示层表示层主要由 PyQt5 图形界面构成包括登录界面、系统主界面、文件加密解密页面、文件传输页面、密钥管理页面和实验统计页面。该层负责用户输入、结果展示、进度反馈和日志输出。业务逻辑层业务逻辑层负责处理文件敏感分级、加密策略选择、线程调度、实验记录生成等核心业务逻辑。该层连接图形界面与底层算法模块是系统的核心控制层。算法与安全层算法与安全层包括 SM2、SM3、SM4 和混合加密模块。该层负责会话密钥生成、文件数据加密、密钥封装、摘要计算和解密后的完整性校验。网络通信层网络通信层包括文件客户端和文件服务端用于在局域网环境中实现文件收发。系统通过 Socket 建立传输连接并使用多线程处理文件接收与发送流程。数据与工具层该层主要包括配置文件、文件工具类、日志工具类和实验数据导出工具用于支持路径管理、元数据封装、CSV 导出和日志记录。系统总体上形成了“界面层调用业务层业务层调用算法层与网络层底层工具提供公共支持”的结构。这种设计降低了模块之间的耦合度提高了系统可维护性。4.2.2 系统功能结构根据系统实际实现情况系统主要包含以下功能模块1用户登录模块用户登录模块用于区分系统使用角色。当前系统设置了管理员与普通用户两类角色。管理员可以使用全部功能包括实验统计与数据导出普通用户可进行文件加密、解密、传输及密钥查看等常规操作。2文件敏感识别模块该模块通过读取文件名、文件扩展名以及文本预览内容结合预设关键词词库对文件进行敏感等级划分。系统将文件分为CORE、IMPORTANT、NORMAL和LOW四个等级并为不同等级匹配不同加密策略。3文件加密解密模块该模块是系统核心功能模块。系统根据敏感等级自动选择加密方式对高敏感文件采用SM2 SM4混合加密对普通文件采用SM4轻量化加密。同时系统在加密阶段计算 SM3 摘要并在解密后重新计算摘要以完成完整性校验。4密钥管理模块密钥管理模块负责 SM2 密钥对的生成、保存、加载和显示。系统在密钥目录下统一管理公钥和私钥文件并支持用户手动切换密钥文件。5文件传输模块该模块由客户端和服务端两部分组成。服务端可启动监听端口并接收文件客户端可指定主机地址和端口发送目标文件。系统通过进度条和日志显示传输状态。6实验统计模块实验统计模块用于记录文件加解密实验结果包括文件名、文件大小、敏感等级、加密策略、加密耗时、解密耗时、完整性校验结果等信息并支持导出 CSV 文件为论文实验分析提供数据支持。4.3 系统运行流程设计4.3.1 系统总体运行流程系统启动后首先进入登录界面。用户输入用户名、密码并选择角色系统完成身份校验后进入主界面。主界面采用左侧导航加右侧工作区的布局形式用户可根据需求切换到不同功能页面。当用户在加密页面选择文件后系统先进行敏感识别。识别完成后界面显示敏感等级、匹配关键词、策略类型等信息。之后用户执行加密系统调用加密线程处理文件。加密完成后生成加密文件并将算法标识、分类结果、原始文件名和 SM3 摘要等元数据写入加密文件头部。当用户对加密文件执行解密时系统先解析元数据判断加密算法类型再根据元数据还原 SM4 会话密钥或直接使用默认密钥进行解密。解密完成后系统重新计算摘要并与原有摘要比较以判断文件完整性。若用户进入文件传输页面可以启动接收服务也可以指定目标地址发送文件。系统使用 Socket 建立连接分块传输文件内容并实时输出日志与进度。若用户进入实验统计页面则可以对指定文件执行加密解密流程并自动记录实验结果最终导出为 CSV 文件用于后续论文实验分析。4.3.2 文件加密流程设计文件加密流程如下用户在图形界面中选择目标文件系统调用敏感识别模块对文件内容与文件类型进行分析根据识别结果确定文件敏感等级与加密策略读取原始文件字节流计算原始文件 SM3 摘要若策略为SM2SM4则随机生成 16 字节 SM4 会话密钥并使用该密钥加密文件数据再使用 SM2 公钥加密会话密钥若策略为SM4则使用默认 SM4 密钥直接加密文件数据构造加密元数据包括算法标识、敏感等级、关键词匹配结果、文件名、SM3 摘要等将元数据与密文按固定格式封装并写入输出文件返回加密结果并更新界面显示。该流程兼顾了敏感分级、自适应加密和完整性校验信息写入三个方面使系统既能实现差异化加密又能保留必要的审计信息。4.3.3 文件解密与完整性校验流程设计文件解密流程如下用户选择待解密的加密文件系统读取加密文件内容从文件头中解析出元数据长度、元数据内容以及密文部分根据元数据中的算法标识判断加密方式若算法为SM2SM4则先提取被 SM2 加密的会话密钥并利用 SM2 私钥解密得到原始 SM4 会话密钥使用得到的 SM4 密钥对密文进行解密若算法为SM4则直接使用预设 SM4 密钥解密对解密得到的明文重新计算 SM3 摘要将当前摘要与元数据中的原始摘要进行比对若两者一致则说明文件完整性校验通过否则说明文件可能被篡改或损坏将解密文件写回磁盘并将校验结果反馈到界面。该设计使系统不仅能够完成解密还能验证文件是否在存储或传输过程中被修改提高了系统的可靠性和安全性。4.3.4 文件传输流程设计文件传输模块采用基于 Socket 的客户端/服务端模式。其主要流程如下接收端启动监听服务绑定指定 IP 地址与端口发送端选择文件填写目标 IP 与端口发送端连接接收端发送端先发送文件名长度、文件名和文件大小接收端解析基础信息并准备写入目标路径发送端按缓冲区大小分块发送文件内容接收端按块接收并写入本地文件双方分别计算发送和接收进度并在界面日志中输出状态文件接收完成后接收端返回确认信息发送端收到确认后结束本次传输。这种设计结构简单易于实现适合局域网环境中的文件传输演示与实验使用。4.4 系统模块详细设计4.4.1 登录模块设计登录模块使用LoginWindow类实现。该模块主要包含用户名输入框、密码输入框、角色选择框和登录按钮。系统通过预置账号进行身份验证其中管理员账号和普通用户账号采用不同的用户名密码组合。登录成功后系统根据角色加载主控制窗口DashboardWindow。管理员用户可以访问全部页面普通用户则不能使用实验统计管理功能。此设计实现了简单的角色访问控制为后续系统扩展到数据库认证或权限管理打下基础。登录模块结构较简单但它在系统中承担了入口控制功能使系统更符合完整桌面应用的设计要求。4.4.2 主界面模块设计主界面采用DashboardWindow实现。界面整体布局分为左右两部分左侧为导航区包含系统名称、当前用户信息以及功能按钮右侧为工作区顶部显示标题中间通过QStackedWidget切换页面底部为统一日志显示区。导航区通过按钮与堆叠窗口索引绑定实现页面切换。当前系统包含以下四个页面文件加密/解密页面文件传输页面密钥管理页面实验统计页面。这种布局方式比传统标签页更接近实际管理系统界面视觉结构清晰操作逻辑也更符合答辩演示需求。4.4.3 文件敏感识别模块设计文件敏感识别模块主要由SensitiveClassifier实现。该模块的核心思想是通过关键词匹配与文件类型判断两个维度对待处理文件进行综合评分并依据评分结果划分敏感等级。1识别依据系统主要依据以下信息判断文件敏感程度文件扩展名文件名中的敏感词文本类文件中的内容预览预设的敏感关键词词库。系统预设三类关键词集合核心敏感关键词重要敏感关键词一般敏感关键词。例如“财务报表”“科研数据”“核心算法”“内部机密”等关键词可直接触发较高分值而“通知”“公告”“备忘录”等词则对应较低分值。2分级规则系统将文件划分为以下四级CORE核心敏感文件IMPORTANT重要敏感文件NORMAL一般文件LOW低敏感文件。3策略映射分类结果与加密策略之间的关系如下CORE、IMPORTANT使用SM2 SM4混合加密NORMAL、LOW使用SM4加密。这种设计实现了“安全等级越高加密强度越高”的自适应机制。4.4.4 国密加密模块设计国密加密模块是系统安全实现的核心包括 SM2、SM3、SM4 和混合加密控制逻辑。1SM2 模块设计SM2 模块主要封装以下功能生成公私钥对保存与加载公私钥使用公钥加密 SM4 会话密钥使用私钥解密 SM4 会话密钥。由于 SM2 属于公钥算法计算开销较大不适合直接对大文件内容进行整体加密因此系统仅使用 SM2 加密 SM4 会话密钥。2SM4 模块设计SM4 模块负责对文件主体内容进行对称加密与解密。由于 SM4 算法速度较快适合处理大规模文件数据因此被用于文件实际密文生成。系统封装了字节流加密与解密接口供混合加密模块统一调用。3SM3 模块设计SM3 模块用于生成文件摘要。系统在加密时对原始明文计算摘要值并将其写入元数据在解密后再次对恢复的明文进行摘要计算用于校验文件完整性。4混合加密模块设计混合加密由HybridCipher类统一控制。其工作过程如下对待加密文件进行敏感识别若等级较高随机生成 SM4 会话密钥使用 SM4 加密文件内容使用 SM2 公钥加密 SM4 会话密钥写入包含算法标识、文件分类结果和摘要信息的元数据封装元数据与密文输出。在解密时系统根据元数据中的算法字段执行对应流程从而实现统一的加密文件处理。这种设计兼顾了 SM2 的密钥保护能力与 SM4 的高效加密能力是一种典型的混合加密方案。4.4.5 元数据封装设计为了实现解密恢复、分类信息记录和完整性校验本系统设计了加密文件元数据封装机制。1元数据内容元数据主要包括以下字段algorithm加密算法标识level文件敏感等级score敏感评分matched_keywords命中关键词file_type_reason文件类型判断依据detail分类说明encrypted_sm4_key经 SM2 加密后的 SM4 会话密钥original_name原始文件名sm3_digest原始文件摘要。2封装方式系统先将元数据组织成 JSON 结构再将 JSON 字节长度写入前 4 个字节随后拼接元数据字节与密文字节。整体格式如下[4字节元数据长度][元数据JSON][密文数据]该设计具有以下优点格式简单易于解析可扩展性较好后续可以继续增加字段能同时支持算法标识、分类记录和摘要信息存储。4.4.6 文件传输模块设计文件传输模块由FileServer和FileClient两部分组成。1服务端设计服务端负责监听指定主机地址和端口并接收客户端发送的文件。系统启动服务端后会创建 Socket 并进入监听状态。一旦有客户端接入系统为该连接创建独立线程以支持并发接收多个文件连接。接收过程中服务端先读取文件名长度和文件大小再根据接收到的字节流按块写入本地目录。系统会按百分比输出接收进度日志。2客户端设计客户端负责向指定主机发送文件。发送前系统检查文件是否存在并获取文件名与文件大小。随后客户端依次发送文件名长度、文件名、文件大小和文件内容。发送过程中利用进度回调函数更新界面进度条。3模块特点该传输模块实现简单能够满足毕业设计演示和基础实验需求。虽然未引入断点续传、传输加密隧道和身份认证机制但与加密模块结合使用时可以实现“先加密后传输”的安全流程。4.4.7 多线程模块设计由于文件加密、解密和发送操作都属于耗时任务若直接在主线程中执行容易导致界面冻结影响用户体验。因此本系统引入QThread多线程机制。系统当前设计了以下线程类EncryptThread负责执行文件加密DecryptThread负责执行文件解密SendFileThread负责执行文件发送。每个线程通过信号槽机制与主界面通信主要包含以下三类信号progress_signal传递当前进度result_signal返回执行结果error_signal返回错误信息。主线程收到进度信号后更新进度条收到结果信号后刷新界面数据收到错误信号后弹出提示框。该设计使系统在执行耗时任务时仍能保持界面响应。4.4.8 密钥管理模块设计密钥管理模块由KeyWidget实现主要负责 SM2 密钥的生成、查看和路径切换。系统在keys目录中统一存放密钥文件默认文件名为sm2_public_key.pemsm2_private_key.pem该模块主要功能包括生成新的 SM2 密钥对将密钥保存至本地目录选择已有公钥或私钥文件在界面中显示当前密钥内容。密钥管理模块使系统具备了基本的密钥生命周期管理能力也为后续扩展密钥轮换、密钥备份等功能提供了基础。4.4.9 实验统计模块设计实验统计模块由StatsWidget实现。其主要目标是为系统性能测试和论文实验数据采集提供支持。1实验流程当用户选择测试文件并点击“执行单次实验”后系统自动完成以下步骤读取默认 SM2 公私钥创建混合加密对象执行文件加密并记录加密耗时对生成的加密文件执行解密并记录解密耗时提取分类结果与完整性校验结果生成实验记录并插入表格。2记录字段实验记录主要包括以下内容文件名文件大小敏感等级加密策略加密耗时解密耗时完整性校验结果输出文件路径。3导出功能系统支持将实验记录导出为 CSV 文件便于后续使用 Excel 或其他数据分析工具绘制图表、统计均值和生成论文实验表格。该模块增强了系统的研究属性使本系统不仅是一个应用程序也能作为实验平台使用。4.5 数据库与数据存储设计本系统当前未引入关系型数据库主要采用本地文件方式存储数据。这是因为系统属于桌面端原型实现重点在于加密逻辑和界面流程验证而非大规模用户管理。当前系统的数据存储主要包括以下几类密钥文件存储于keys目录用于保存 SM2 公钥和私钥。日志文件存储于logs目录用于记录系统运行信息、异常信息和操作轨迹。实验数据文件存储于data目录主要为实验导出的 CSV 文件。接收文件目录存储于received_files或用户自定义目录用于保存通过传输模块接收到的文件。加密输出文件加密后的文件默认以.encrypted为后缀写入原文件目录解密后恢复原文件名或使用.decrypted后缀命名。这种基于本地文件的数据组织方式实现成本低便于项目开发与部署也符合毕业设计原型系统的实现特点。4.6 系统界面设计4.6.1 登录界面设计登录界面作为系统入口主要包含标题区、用户名输入区、密码输入区、角色选择区和登录按钮。界面设计简洁操作流程明确。通过角色下拉框用户可选择管理员或普通用户身份进入系统。4.6.2 主界面设计主界面采用左侧导航与右侧工作区布局。左侧用于功能切换右侧用于承载具体页面内容和系统日志。该结构使功能组织清晰便于演示和后续扩展。4.6.3 加密解密界面设计该界面包含文件选择区、密钥加载区、识别结果区、操作按钮区、进度条区和结果输出区。用户在一个页面中即可完成文件选择、敏感识别、加密解密和元数据查看等操作。4.6.4 文件传输界面设计文件传输界面分为接收端设置区、发送端设置区、进度显示区和日志区。通过分别设置监听参数和发送目标用户可以完成本机或局域网环境下的文件传输测试。4.6.5 密钥管理界面设计密钥管理界面主要用于生成和查看 SM2 密钥。界面包含路径显示区和密钥内容显示区便于用户理解系统密钥结构。4.6.6 实验统计界面设计实验统计界面包括测试文件选择、实验执行按钮、导出按钮和实验结果表格。该界面强调结果记录与数据输出功能适合作为实验章节的数据来源页面。以上功能略有删减仅供参考4.7 系统关键实现说明4.7.1 自适应加密策略实现系统通过文件敏感识别结果决定加密策略这是本系统区别于普通加密工具的重要特点。该策略实现了“不同文件不同保护方式”的设计思想增强了系统的智能化程度。4.7.2 保密性与完整性联合实现系统在保密性方面采用 SM2 和 SM4在完整性方面采用 SM3。三者协同工作使系统同时具备文件机密保护和数据篡改检测能力。该设计符合信息安全系统中“机密性 完整性”的基本要求。4.7.3 图形界面与线程协同实现在 PyQt5 中界面线程主要负责绘制和响应用户操作而具体的加密、解密和传输任务放入后台线程中执行。通过信号槽方式传递进度和结果保证了界面的流畅性与交互性。4.7.4 模块化开发实现系统代码结构按照功能拆分到不同目录中如crypto、network、gui、utils、config等。各模块职责明确便于开发、调试和维护。该设计也方便后续增加新算法、新界面或新实验模块。4.8 本章小结本章围绕系统设计与实现展开首先分析了系统设计目标和总体架构然后从运行流程、功能模块、数据组织、界面设计和关键实现机制等方面对基于 PyQt5 的国密文件加密系统进行了详细说明。本系统通过引入文件敏感等级识别机制实现了面向不同安全等级文件的自适应加密策略通过结合 SM2、SM4 和 SM3实现了文件保密性与完整性保护通过 PyQt5 图形界面、多线程处理和实验统计模块提高了系统的可用性、可演示性和研究价值。整体来看本系统已经具备较完整的桌面端安全应用原型结构为后续的系统测试与性能分析奠定了基础。下面再给你一个适合直接放到论文里的“第四章目录版”你可以对照学校模板改。第四章目录建议第四章 系统设计与实现4.1 系统设计目标4.2 系统总体设计4.2.1 系统总体架构4.2.2 系统功能结构4.3 系统运行流程设计4.3.1 系统总体运行流程4.3.2 文件加密流程设计4.3.3 文件解密与完整性校验流程设计4.3.4 文件传输流程设计4.4 系统模块详细设计4.4.1 登录模块设计4.4.2 主界面模块设计4.4.3 文件敏感识别模块设计4.4.4 国密加密模块设计4.4.5 元数据封装设计4.4.6 文件传输模块设计4.4.7 多线程模块设计4.4.8 密钥管理模块设计4.4.9 实验统计模块设计4.5 数据存储设计4.6 系统界面设计4.7 系统关键实现说明4.8 本章小结详细设计原理本系统采用基于文件敏感等级的自适应加密设计通过关键词匹配与文件特征分析实现文件分级并根据分级结果动态选择加密策略。在加密机制上系统采用 SM2 与 SM4 结合的混合加密方式以实现密钥安全与加密效率的平衡。同时引入 SM3 摘要算法实现完整性校验确保数据在存储和传输过程中未被篡改。在系统结构上采用模块化设计将界面层、业务逻辑层与密码算法层分离并通过多线程机制提升系统响应性能。此外通过设计统一的元数据封装结构使加密文件具备自描述能力提高系统的可扩展性与可维护性。