第1003章 组算法模块划分(1 / 1)
卷首语
1964 年 10 月,“73 式” 程序存储方案(磁芯存储器)确定后,算法团队面临新的技术挑战:37 阶矩阵加密逻辑涵盖明文处理、分组补零、矩阵变换、密钥生成、解密恢复等全流程,若直接进行代码固化,将导致程序结构混乱、维护困难,且难以适配硬件模块化设计。此时,将核心算法按 “功能独立、边界清晰” 原则拆分为 19 组模块,成为连接 “逻辑设计” 与 “代码落地” 的关键步骤。这场为期 1 个半月的模块划分工作,不仅让复杂的加密逻辑实现系统化拆解,更提升了代码的可测试性、可维护性与硬件适配性,为后续算法代码固化与硬件集成搭建了标准化的技术桥梁。
一、模块划分的背景与核心目标
37 阶矩阵加密逻辑通过初步测试后,李工团队在代码固化准备中发现:完整加密逻辑包含 28 个核心操作步骤(如明文校验、37 字节分组、随机补零、8 次矩阵变换等),若编写为单一程序,代码量将超 8KB(磁芯存储器程序区容量),且调试时难以定位错误(如矩阵变换错误与补零错误无法区分),模块划分势在必行。
基于 “73 式” 研发需求与后续维护考量,团队明确模块划分三大目标:一是功能独立,每个模块仅负责单一核心功能(如 “矩阵变换模块” 仅执行 M1-M8 变换,不涉及密钥生成);二是边界清晰,明确每个模块的输入输出参数(如 “密钥生成模块” 输入密钥种子,输出 128 位密钥,不接收其他模块数据);三是适配硬件,模块规模需匹配磁芯存储器分区(单模块代码量≤512 字节,便于加载至程序存储区)。
模块划分工作由李工牵头(算法板块负责人),组建 5 人专项小组:李工(整体逻辑拆解,把控模块分类)、吴工(矩阵运算模块设计,熟悉变换流程)、陈工(分组与补零模块设计,负责输入处理)、郑工(密钥管理模块设计,参与密钥生成理论)、马工(异常处理与辅助模块设计,擅长测试逻辑),确保覆盖加密全流程。
划分周期规划为 1 个半月(1964.10.1-1964.11.15),分三阶段:第一阶段(10.1-10.10)拆解加密流程,初步拟定模块清单;第二阶段(10.11-10.31)明确模块功能与边界,绘制模块交互图;第三阶段(11.1-11.15)组织评审,优化模块划分,衔接后续代码编写。
划分启动前,团队梳理核心约束条件:模块总数控制在 19 组(基于流程步骤拆解与硬件适配测算,19 组可实现功能全覆盖且单模块规模适中);模块交互需通过指定缓存区(磁芯存储器数据区,地址 0x4000-0x7FFF),避免直接数据调用;每个模块需预留测试接口,便于独立验证。
二、加密流程拆解与模块划分逻辑
李工团队首先开展加密全流程系统化拆解,梳理出 “明文输入 - 预处理 - 分组补零 - 矩阵变换 - 密钥生成 - 加密整合 - 密文输出” 7 大核心阶段,以及对应的解密反向流程(“密文输入 - 解密矩阵变换 - 补零移除 - 明文整合 - 明文输出”),同时包含异常处理(如格式错误、运算溢出)与辅助功能(如版本管理、日志记录),形成完整流程图谱。
模块划分遵循 “流程阶段 + 功能属性” 双维度逻辑:流程阶段维度确保模块覆盖全流程(如输入阶段对应 “明文预处理模块”,分组阶段对应 “分组模块”);功能属性维度确保模块单一职责(如 “矩阵运算” 按 “变换 - 逆变换 - 模运算” 拆分为独立模块,而非合并为一个),避免 “大模块” 导致的功能混杂。
拆解过程中重点解决 “跨阶段功能归属” 问题:例如 “补零校验” 功能,虽与分组阶段相关,但需在解密阶段验证补零位置,团队最终将其拆分为 “补零参数生成模块”(加密阶段,生成补零位置与校验位)与 “补零参数验证模块”(解密阶段,验证并移除补零),确保两个阶段的功能独立,互不依赖。
模块规模控制通过 “功能拆分” 实现:例如 “矩阵变换” 功能,若包含 M1-M8 变换、模 256 运算、并行控制,代码量将超 800 字节,团队按 “变换逻辑 - 运算控制 - 并行调度” 拆分为 “矩阵变换执行模块”“模 256 运算模块”“矩阵并行控制模块” 3 个模块,每个模块代码量控制在 400 字节以内,适配硬件存储需求。
10 月 10 日,团队完成初步拆解,形成《加密流程拆解图谱》,标注每个流程步骤的功能描述、输入输出数据、关联后续步骤,为后续 19 组模块的具体划分提供流程依据,确保模块划分不遗漏、不重复覆盖流程节点。