开发 AES-128 原型、目录读取、文件头写入、偏移量定位和 Huffman 树序列化。 .sy协议:文件系统信息写进二进制文件,读取器按同一规则读回。涉及的主要模块有:文件头、目录块、数据区、定位工具和读取器。
2025 年 9 月 29 日到 2025 年 10 月 5 日:AES 原型与密钥入口
开发 Aes.cpp 和 Aes.h。首先实现主逻辑,接着补齐密钥对齐。密码入口采用 SHA-256 派生,再截取前 16 字节作为 AES-128 密钥。AES 模块内部只处理 128 位密钥。
void SubBytes(state_t &state);void ShiftRows(state_t &state);void MixColumns(state_t &state);void AddRoundKey(state_t &state);AES 初版使用 ECB。由于系统尚未引入目录块、数据块、偏移量、IV 和文件头,目前仅做实验性实现
2025 年 10 月 11 日到 2025 年 10 月 18 日:结构设计与并发架构的设计(虽然最后并未使用)
代码从单文件算法实验转向模块化结构。目录内出现 Scheduler、ThreadPool、TaskQueue、DataInteraction 等名称,职责划分也随之明确:调度层负责组织流程,压缩与加密模块只处理字节流,数据交互层负责把文件系统内容转成模块输入。
线程池和任务队列先以接口形式落位。主流程没有并入并发执行,但 TaskMonitor、条件变量、队列和销毁逻辑已经编写完成。主流程保持单线程时使用同一份数据交换结构,并发分支接入时也不需要重写。
模块化设计把压缩与加密拆开。目录树读取器、文件头写入器、数据块读取器被划入协议层。协议层与算法层分离后,Huffman、AES、GUI 共享同一份文件系统结构。
2025 年 10 月 21 日到 2025 年 10 月 30 日:工具类与偏移量
CompressionModules/heffman 负责 Huffman,EncryptionModules/aes 负责 AES,CompressorFileSystem/DataCommunication 负责目录树、文件头、偏移量、路径和数据块读写。
需要注意的是,并发代码承担的是模块交接任务。TaskMonitor 使用 vector、condition_variable 和 mutex 管理多条队列。工程结构已经脱离单文件测试程序的写法。
Locator ,关键工具。用于归档文件写入文件头后偏移量字段回填。负责在文件头、目录块、数据区之间定位,封装并且统一所有 seekg 和 seekp的调用。directoryOffset、compressedSize、目录块大小和文件头定位从此纳入同一套偏移量规则。
协议中出现需要回填的字段,不同区域通过偏移量互相引用。
2025 年 11 月 1 日到 2025 年 11 月 13 日:HeaderReader、filesystem 与目录信息读取
读取器 Reader、ReaderUpdate、Reader_filesystem、HeaderReader 的重构。主要处理文件系统路径接入、目录项结构化读取、位流与普通文件流统一、Windows 路径编码处理。读取器形态由普通文件流读取转向“按目录项解释字节流”。
抛弃posix(我不会),使用标准库的filesystem。MyQueue、辅助结构、目录队列、文件队列成形,构建目录块解析方案。
Windows 路径问题。宽字符路径做过试验,最终规则尚未固定,但编码已经进入协议设计范围。
读取器重构后,目录信息进入内存结构,由读取器和队列维护。
2025 年 11 月 17 日到 2025 年 11 月 30 日:HeaderWriter、Huffman 序列化与 Header 雏形
开始写入端的编写。HeaderLoader、FileLibrary、DirectoryReader、HeaderWriter 。读取和写入形成对应关系:目录信息如何落盘,解压侧就按同样规则读回。文件头预留哪些字段,数据区写入时就按同样位置回填。
Huffman 编码树保存方式固定。树序列化采用先序遍历,叶子节点写 'l' 和字节值,内部节点写 'r'。解压侧根据树数据重建 Huffman 树,不重新扫描整文件统计频率。树的序列化方式固定后,压缩侧与解压侧共享同一份树结构,数据块也具备独立编码和独立恢复条件。
文件头Header结构同步定形。包含 魔数、策略号、版本号、保留位、目录偏移量、尾部魔数。
文件头里预留八位strategy。为多策略模式保留扩展位。
2025 年 11 月 29 日到 2025 年 11 月 30 日:AES 从 ECB 转向 CFB
目录块和数据块纳入协议后,AES 模式需要随协议组织方式调整。归档文件按给定大小数据块写入,不做16B块对齐。目录信息和数据信息都依赖块分割协议。AES加密模式从CBC改成 CFB。原因是CFB 不改变数据长度,更加能准确还原信息,也便于在分割标准中记录 IV。
结果
AES 原型脱离单文件实验。目录结构、读取器、写入器、定位工具和偏移量规则纳入同一套代码。Huffman 树序列化方式固定,文件头字段和协议边界确定。CLI、目录恢复、数据区写入、GUI 都建立在这组协议代码上。
部分信息可能已经过时
粤公网安备44011102484817号