第1003章 组算法模块划分(1 / 2)
卷首语
1964 年 10 月,“73 式” 程序存储方案(磁芯存储器)确定后,算法团队面临新的技术挑战:37 阶矩阵加密逻辑涵盖明文处理、分组补零、矩阵变换、密钥生成、解密恢复等全流程,若直接进行代码固化,将导致程序结构混乱、维护困难,且难以适配硬件模块化设计。此时,将核心算法按 “功能独立、边界清晰” 原则拆分为 19 组模块,成为连接 “逻辑设计” 与 “代码落地” 的关键步骤。这场为期 1 个半月的模块划分工作,不仅让复杂的加密逻辑实现系统化拆解,更提升了代码的可测试性、可维护性与硬件适配性,为后续算法代码固化与硬件集成搭建了标准化的技术桥梁。
一、模块划分的背景与核心目标
37 阶矩阵加密逻辑通过初步测试后,李工团队在代码固化准备中发现:完整加密逻辑包含 28 个核心操作步骤(如明文校验、37 字节分组、随机补零、8 次矩阵变换等),若编写为单一程序,代码量将超 8Kb(磁芯存储器程序区容量),且调试时难以定位错误(如矩阵变换错误与补零错误无法区分),模块划分势在必行。
基于 “73 式” 研发需求与后续维护考量,团队明确模块划分三大目标:一是功能独立,每个模块仅负责单一核心功能(如 “矩阵变换模块” 仅执行 1-8 变换,不涉及密钥生成);二是边界清晰,明确每个模块的输入输出参数(如 “密钥生成模块” 输入密钥种子,输出 128 位密钥,不接收其他模块数据);三是适配硬件,模块规模需匹配磁芯存储器分区(单模块代码量≤512 字节,便于加载至程序存储区)。
模块划分工作由李工牵头(算法板块负责人),组建 5 人专项小组:李工(整体逻辑拆解,把控模块分类)、吴工(矩阵运算模块设计,熟悉变换流程)、陈工(分组与补零模块设计,负责输入处理)、郑工(密钥管理模块设计,参与密钥生成理论)、马工(异常处理与辅助模块设计,擅长测试逻辑),确保覆盖加密全流程。
划分周期规划为 1 个半月(1964.10.1-1964.11.15),分三阶段:第一阶段(10.1-10.10)拆解加密流程,初步拟定模块清单;第二阶段(10.11-10.31)明确模块功能与边界,绘制模块交互图;第三阶段(11.1-11.15)组织评审,优化模块划分,衔接后续代码编写。
划分启动前,团队梳理核心约束条件:模块总数控制在 19 组(基于流程步骤拆解与硬件适配测算,19 组可实现功能全覆盖且单模块规模适中);模块交互需通过指定缓存区(磁芯存储器数据区,地址 0x4),现存于研发团队档案库,包含全流程图谱、步骤说明、功能归属标注,共 28 页,由李工、吴工共同绘制,是模块划分的核心流程依据。
档案中 “加密流程图谱” 采用流程图标准绘制:矩形框标注流程步骤(如 “步骤 3:37 字节分组”),箭头标注数据流向,旁注功能描述(“将预处理后的明文按 37 字节拆分,最后一组不足 37 字节时标记补零需求”),并标注该步骤拟归属的模块类别(“分组模块”),拆解逻辑可视化。
步骤说明页记录关键流程的细节:“步骤 5:矩阵变换” 说明为 “接收 37 字节分组向量,依次调用 1-8 矩阵进行乘法运算,每轮运算后执行模 256 处理,输出变换后向量至密钥整合阶段”,明确该步骤需拆分为 “矩阵变换执行”“模 256 运算”“矩阵调度” 3 个模块,为后续模块拆分提供依据。
档案中 “功能归属争议记录” 显示:针对 “密钥与矩阵变换的整合” 功能,团队曾讨论是否合并为 “加密整合模块”,最终决定拆分为 “密钥整合模块”(负责密钥与变换向量的逻辑结合)与 “加密输出控制模块”(负责整合后数据的格式转换与输出),争议解决依据为 “功能独立原则,整合与输出属于不同流程阶段”。
档案末尾 “初步模块清单” 列出 22 个候选模块,标注每个模块对应的流程步骤,如 “明文格式校验模块(步骤 1-1)”“分组执行模块(步骤 3-1)”,为后续优化为 19 组模块提供初始基础,档案有李工、陈工的签名,日期为 10 月 10 日。
四、19 组模块的具体分类与功能定义
基于流程拆解,团队通过合并同类功能、拆分过大模块,最终确定 19 组模块,按 “功能大类” 分为 7 类,每类模块功能独立、边界清晰,覆盖加密与解密全流程。
第一类 “输入处理类”(2 组):1“明文格式校验模块”,功能为校验输入明文是否为 AScII 码,剔除非法字符(如非打印字符),输出合法明文片段,错误率≤0.001%;2“明文长度统计模块”,功能为统计合法明文总长度,计算分组数量(如 1%。
第七类 “异常处理类”(1 组):1“算法异常处理模块”,功能为实时监测其他模块的运行状态(如明文格式错误、矩阵运算溢出、密钥求解失败),接收异常信号后,输出报警提示(如 LEd 指示灯或文字提示),并执行异常处理(如格式错误时暂停输入,溢出时重新运算),确保算法整体不崩溃,异常恢复率≥99.9%。
第八类 “辅助功能类”(2 组):1“算法版本管理模块”,功能为存储当前算法模块的版本信息(如矩阵参数版本、密钥算法版本),输出版本号至外部接口,便于后续算法升级与版本追溯;2“运算日志记录模块”,功能为记录关键运算步骤的结果(如分组数量、密钥生成时间、异常事件),日志存储于磁芯存储器备份区,可查询近 72 小时记录,便于故障排查与维护。
19 组模块功能定义完成后,团队编制《19 组算法模块功能清单》,详细记录每个模块的输入参数(如 “明文格式校验模块” 输入为 “原始明文流”)、输出参数(如 “合法明文片段 + 错误标记”)、功能描述、关联模块(如 “明文格式校验模块” 关联 “明文长度统计模块”),确保模块间交互逻辑清晰。
六、历史补充与证据:模块功能清单档案
1964 年 10 月的《“73 式” 电子密码机 19 组算法模块功能清单档案》(档案号:L-1964-002),现存于军事通信技术档案馆,包含模块清单表、输入输出参数说明、关联关系图,共 45 页,由李工、郑工共同编制,是模块功能定义的核心凭证。
档案中 “模块清单表” 按类别排序,每一行记录模块名称、编号(如 “输入 - 01:明文格式校验模块”)、代码量估算(如 “约 384 字节”)、负责人(如 “陈工”)、功能摘要,例如 “矩阵 - 03:模 256 运算模块” 摘要为 “处理矩阵变换后超范围元素,执行模 256 运算,输出 0-255 标准化元素,适配硬件数据格式”。
输入输出参数说明页详细记录:“密钥 - 02:128 位密钥计算模块” 输入为 “密钥种子(128 位)、方程组参数(138x128)”,输出为 “128 位密钥(二进制)、密钥有效性标记(合法 \/ 非法)”,参数格式标注为 “密钥种子:十六进制,32 个字符;方程组参数:二进制,存储地址 0x2000-0x3FFF”,确保代码编写时参数格式统一。
关联关系图用箭头标注模块间的数据流:“明文格式校验模块”→“明文长度统计模块”(输出合法明文片段);“明文长度统计模块”→“37 字节分组模块”(输出分组计数);“37 字节分组模块”→“矩阵变换执行模块”(输出标准分组向量),直观展示模块交互路径,无循环依赖(如 A→b→c,无 c→A)。
档案末尾 “功能边界确认表” 记录每个模块的 “禁止功能”,如 “37 字节分组模块” 禁止 “补零操作”“格式校验”,仅允许 “分组拆分”;“密钥生成模块” 禁止 “矩阵运算”“明文处理”,确保功能边界不越位,表中有李工、吴工的签名,日期为 10 月 31 日。
↑返回顶部↑