安全关键系统中的安全编码生成方法与装置的制造方法

文档序号:8298903阅读:246来源:国知局
安全关键系统中的安全编码生成方法与装置的制造方法
【技术领域】
[0001]本发明涉及城市轨道交通技术领域,尤其涉及一种安全关键系统中的安全编码生成方法与装置。
【背景技术】
[0002]目前,在铁路、民航、航天等安全关键领域中,其控制中枢属于安全关键系统,必须具有极高的安全性、可靠性和健壮性。这类系统的质量不仅取决于在所有可能输入下都是正确的,更取决于当有外界电磁干扰、机械振荡、热噪声存在时,软件或者可以正常运行或者导向安全侧。在特定行业的技术规范中,一般都会对安全关键软件的程序代码提出苛刻的要求。例如,在铁路行业中,《计算机联锁技术条件(送审稿)(V1.31)》8.4.3条和8.4.4条就有明确规定,与铁路行车安全相关的变量的不同取值之间的汉明距离不小于4,非法码字与合法码字的比例不小于255:1。这两条规定不仅适用于铁路行业,也适用于民航、航天、汽车等对可靠性要求苛刻的行业。
[0003]综观各行业安全关键软件,它们对这两条规定的应对方案可以分为三种:一是顺序编码,即某个变量的取值完全按照1、2、3、4等顺序来自然编码,这种编码方式具有直观、高效、易于理解的优点,但是它完全忽略了上述两条规定,在复杂电磁环境下易受到内存跳变的影响,存在极大的安全隐患;二是随机编码,即某个变量的取值通过随机数发生器来确定,这种方式具有方便、快捷的优点,但是它不能保证同一变量的任意两个取值之间的汉明距离不小于4,因此无法避免因电磁干扰等导致的内存跳变问题;三是手工指定具有特定汉明距离的码字,这种编码方式可以保证遵守上述两条安全编码规定,但是容易出错,效率很低,上下文交互极不方便,经常因为程序员的遗忘等因素导致人为串码,具有很大的安全隐患。

【发明内容】

[0004]本发明所要解决上述提到的技术问题,本发明提供了一种安全关键系统中的安全编码生成方法与装置。
[0005]为此目的,本发明提出了一种安全关键系统中的安全编码生成方法,包括:
[0006]S1:对预生成信息码进行二进制取反操作,生成原始码字;
[0007]S2:对所述原始码字通过二进制数学计算进行编码。
[0008]具体地,所述步骤S2进一步包括:通过C语言预编译宏方式进行提供;预编译宏在编译之前进行解析,在编译期间进行宏展开和常量合并。
[0009]具体地,所述步骤S2进一步包括:通过C语言函数方式进行提供;通过静态数组映射的方式返回编码结果。
[0010]进一步地,还包括:对编码后的码字进行解码。
[0011]具体地,所述对编码后的码字进行解码,具体包括:通过C语言函数的方式进行提供;使用二分法进行搜索和解码。
[0012]为此目的,本发明提出了一种安全关键系统中的安全编码生成装置,包括:
[0013]原始码字生成模块,用于对预生成信息码进行二进制取反操作,生成原始码字;
[0014]编码模块,用于对所述原始码字通过二进制数学计算进行编码。
[0015]具体地,所述编码模块,还包括:
[0016]第一方式提供单元,用于通过C语言预编译宏方式进行提供;
[0017]解析单元,用于预编译宏在编译之前进行解析;
[0018]宏操作单元,用于在编译期间进行宏展开和常量合并。
[0019]具体地,所述编码模块,还包括:
[0020]第二方式提供单元,用于通过C语言函数方式进行提供;
[0021]编码结果返回单元,用于通过静态数组映射的方式返回编码结果。
[0022]进一步地,还包括:解码模块,用于对编码后的码字进行解码。
[0023]具体地,所述解码模块,还包括:
[0024]第三方式提供单元,用于通过C语言函数的方式进行提供;
[0025]搜索与解码单元,用于使用二分法进行搜索和解码。
[0026]本发明公开了一种安全关键系统中的安全编码生成方法,通过对预生成信息码进行二进制取反操作,生成原始码字;对原始码字通过二进制数学计算进行编码。本发明提出的一种安全关键系统中的安全编码生成方法具有安全性,即任意码字之间的距离都不小于4,非法码字与合法码字的比例远远大于255:1 ;便捷性,即针对不同的变量,可以方便地进行编码和解码;高效性,即提供了两种编码手段,第一种手段仅消耗编译时间,几乎不耗费任何运行时间,第二种手段具有极低的常量运行时间。提供了一种解码手段,其运行耗时大约为第二种编码手段的两倍,效率非常高。编码和解码的运行时空间复杂度都是0(1);提供编码常量:第一种编码手段提供的码字可以当作常量来使用,以规避C语言编译器对数组大小的常量限制;适用范围广,即提供了 169个基本码字和足够多的扩展码字,适合绝大多数工业软件中的变量取值范围;不易出错,即自动化的编码和解码手段,消除了手工编码的费时易错特点;算法封装性,即将编码函数和解码函数进行了对象封装,客户端只需使用一个全局只读的算法对象,即可访问所有算法,减轻了程序员的记忆负担。本发明还公开了一种安全关键系统中的安全编码生成装置。
【附图说明】
[0027]通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
[0028]图1示出了本发明实施例中的一种安全关键系统中的安全编码生成方法的步骤流程图;
[0029]图2示出了本发明实施例中的一种安全关键系统中的安全编码生成装置的结构框图;
[0030]图3示出了本发明实施例中的一种安全关键系统中的安全编码生成方法中编码宏的定义过程的步骤流程图;
[0031]图4示出了本发明实施例中的一种安全关键系统中的安全编码生成方法中编码宏使用过程的步骤流程图;
[0032]图5示出了本发明实施例中的一种安全关键系统中的安全编码生成方法中编码函数的定义过程的步骤流程图;
[0033]图6示出了本发明实施例中的一种安全关键系统中的安全编码生成方法中编码函数的使用过程的步骤流程图;
[0034]图7示出了本发明实施例中的一种安全关键系统中的安全编码生成方法中解码函数的定义过程的步骤流程图;
[0035]图8示出了本发明实施例中的一种安全关键系统中的安全编码生成方法中解码函数的使用过程的步骤流程图。
【具体实施方式】
[0036]为了保证安全关键软件中的程序代码遵循安全编码规定,同时避免现有技术方案的缺点,本发明提出了一种改进型编码方式,安全编码快速生成器,即本发明提出了一种安全关键系统中的安全编码生成器及生成方法。
[0037]下面将结合附图对本发明的实施例进行详细描述。
[0038]为了更好的理解与应用本发明提出的一种安全关键系统中的安全编码生成方法与装置,以如下附图示例进行详细说明。
[0039]如图1所示,本发明提出了一种安全关键系统中的安全编码生成方法,包括:
[0040]步骤S1:对预生成信息码进行二进制取反操作,生成原始码字。
[0041]步骤S2:对原始码字通过二进制数学计算进行编码。
[0042]具体地,步骤S2进一步包括:通过C语言预编译宏方式进行提供;预编译宏在编译之前进行解析,在编译期间进行宏展开和常量合并。因此,这种手段生成的编码结果将是运行时常量,不用在运行时为编码过程申请新的内存,因此运行时的时间复杂度和空间复杂度都是0(1)。这种编码手段适合于C语言对数组大小和switch-case语句有常量要求的场合,也适用于对运行效率有苛刻要求的场合。
[0043]进一步地,步骤S2进一步包括:通过C语言函数方式进行提供;通过静态数组映射的方式返回编码结果。运行效率极高,时间复杂度是0(1),只需一次数组地址偏移即可得到结果。静态数组属于模块内的堆内存,是编译期间分配的,无需申请新内存,运行时的空间复杂度是0(1)。这种编码手段提供了极大的运行时灵活性,方便对动态输入进行安全编码。通过C语言预编译宏方式进行提供。
[0044]更进一步地,本发明提出的一种安全关键系统中的安全编码生成方法还包括:对编码后的码字进行解码。具体地,通过C语言函数的方式进行提供;使用二分法进行搜索和解码。
[0045]本发明提出了一种安全关键系统中的安全编码生成方法,通过对预生成信息码进行二进制取反操作,生成原始码字;对原始码字通过二进制数学计算进行编码。本发明提出的一种安全关键系统中的安
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1