数码代密软件设计综述

时间:2022-10-25 08:33:23

数码代密软件设计综述

作者:刘德祥 单位:国防信息学院

从理论上讲,只要有了一种具有连续分布的随机变量,就可以通过变换和运算产生其他任意分布的随机变量,而在[0,1]区间上的均匀分布是最简单的连续分布,所以若能先在计算机上产生出[0,1]均匀分布的随机数,其它分布的随机数就可由此变换得到。仿真模拟中采用的随机数发生器不是在概率论意义下的真正的随机数,而只能称为伪随机数,通常是指利用数值方法或算术方式产生的随机数。产生伪随机数最简单直观的方法是平方取中发生器,而使用最普遍的方法是线性同余发生器,以及由此产生的组合同余发生器。在计算机系统里,一个真正的随机数流是不可能得到的,也是不必要的。此外,模拟模型需要重复性,需要控制随机数发生器关键特性的方法,以便能够利用某些数理统计理论。因此,我们使用的随机数发生器是完全确定的数学函数。随机数发生器从相同的初始条件开始,总是产生相同的随机数流[4,5]。数码代密所使用的数字尽管只有10个数字,但采用何种方法将其变为无序并非易事,利用随机数的方法产生10个任意排列且不重复的随机数序列是不现实的,因此,需要产生的随机数应该远大于10。为方便数据的提取及程序的可扩展性,本模块缺省产生0-100区间内100个随机数。随机数发生器初始化在程序运行开始时进行。一般情况下通过增加语句srand((unsigned)time(NULL))既可。随机数产生示例代码为:(代码略)

数组的产生与赋值数组是有序数据的集合。数组中的每个元素都属于同一个数据类型。用一个统一的数组名和下标来唯一地确定数组中的元素。本模块采用两个100位的整型数组,其中之一用于存储产生的100个随机数,另一个首先赋定值(缺省为99),而后根据存储的100位随机数个位数情况确定存储相应的1-0数字。其方法是将1-0共10位数字循环,取随机个个位数字相比较,不同时继续循环查找,相同时存入给定值数组后退出随机数循环开始查找另一数字,直到结束。代码示例如下(代码略)动态数组的使用在使用VC进行比较复杂的编程时,经常需要用到复杂的数组结构,并希望能实现动态管理。由于C++并不支持动态数组,MFC提供了一个CArray类来实现动态数组的功能。有效地使用CArray类,可以提高程序的效率。MFC提供了一套模板库,来实现一些比较常见的数据结构如Array、List、Map。CArray即为其中的一个,用来实现动态数组的功能。本模块使用数组类存储1-0无序的十位数字,主要是便于验证与比较。定义数组类要声明CArray类,需要提供两个参数:第一个参数是数组包括的对象类型;第二个参数是类型说明,这个说明当引用数组中的对象时使用。如果第一个参数指定为一个类,第二个参数应该为该类的参考。如果第一个参数是类的指针,则第二个参数应该为同样的指针。如:CArray<CString,CString&>strWordBook;值得注意的是,要使用模板类,需要在代码中加入以下包含文件。#include<afxtempl.h>将数据存入数组类中根据产生的0-100之间的随机数产生具有无序的1~0十个数字,而且每次运行程序时数字的排序不能相同,需要对数组数据进行重新排列。如果直接对数组数据进行任意排序,既不经济,也没有通用性。因此,将数组数据存入字符数据类中,既方便操作,也有利于节省成本和计算资源。将数据数组的值赋给字符数组值前,应该与特殊的数值相比对。当与特殊的数值值不同时,既可将数据数据存入数组类中。代码如下所示:CStringstrTemp;strWordBook.RemoveAll();for(inti=0;i<100;i++){strTemp.Format("%d",New[i]);if(strTemp!="99")strWordBook.Add(strTemp);}检验真码与伪码是否一一对应模块通过将真码与伪码相对照,如果伪码与真码相同,则与字符数组中的后一位真码值的伪码相交换,如果最后一位伪码与真码相同,则与第一位真码中的伪码值相交换。这样生成的真码与伪码自然就形成了无序排列,从而实现了对原始数据的加密,保障了原始数据的安全使用[6]。代码如下所示:(代码略)

数码代密模块的软件实现集中体瑞在四个部分:第一部分主要是产生100个[0,100]之间的随机数,目的是产生具有无序排列的10个0-1之间的无重复数字。由于生成的随机数样本有100个,其本身具有随机性,100个随机数的个位数字亦相应具有随机性,能够满足相关的要求;第二部分主要是生成仅包含1-0随机数样本的数组。由于生成的随机数只包含1-0十个数字,原有的数据需要进行处理后才能使用,因此模块将对产生的100个[0,100]之间的随机数进行处理,使其满足相关的要求;第三部分就是获取实际的1-0共10个数字。由于100个1-0之间的数字对数码代密来说,数据冗余较大,必须对其进行取舍并存入相应的数组类中,以便于验证与校对;最后就是对生成的伪码并进行验证处理,确保真码与伪码构成一一对应的关系。数码代密模块的程序实现流程如图1所示。数码代密模块在军事信息通信网络中的应用相当广泛,无论是军事信息通信网络指控软件的使用还是各级信息化部门或通信部门的文书制作与处理中均有较大的应用价值。尤其是在极端条件下,利用模块生成的指挥文书能够保障军队最低限度的通信联络,实现军事指挥信息的有效传递。

随着全球信息化进程的加速,军事信息安全建设的任务将比以往任何时候都更为艰巨,其地位和作用将比以往任何时候都更为重要。本数码代密模块充分利用了计算机程序设计语言与数据结构的知识,采用最优设计,使模块能够针对不同的情况进行灵活处理,易于日常管理与维护以及软件的扩展升级。既适应于军事信息系统的安全设计,也适用于计算机模拟仿真类课程教学,为模块全面广泛的运用积累了大量的经验,也为程序的二次开发提供了最重要的依据。

上一篇:地理数据软件设计论述 下一篇:计算机输出功能的研发