一种数据处理方法以及装置与流程

文档序号:11293057阅读:175来源:国知局
一种数据处理方法以及装置与流程

本发明涉及信息安全技术领域,具体而言,涉及一种数据处理方法以及装置。



背景技术:

雪崩效应,是指在数据处理中,原始输入中的任意一个微小变化,都会造成输出产生巨大改变;而完全的雪崩效应,原始输入中的任意一个微小变化,都会造成输出全部产生改变。这种处理特性可有多种用途,如数据加密及解密、计算消息摘要、生成随机数等。

加密技术自古代就已开始研究,信息的保护无论是军事、政府还是商业乃至个人,都是非常重要的。一些部门及组织,对加密强度有着极高的需求。如果加密信息被破译,其后果可能是非常严重的。随着人类社会进入计算时代、商业时代,大数据加密成为一种重要需求,如数据库加密、磁盘加密、云加密等。加密速度成为实现这一需求的瓶颈。在信息安全领域,现有的无论何种加密技术,速度和强度几乎不可兼得。随着计算机的高速发展,各种密码攻击方法的出现与成熟,使得现有技术面临着严峻的挑战。



技术实现要素:

有鉴于此,本发明旨在提供一种数据处理方法以及装置,该方法及装置能够实现快速完全的雪崩效应,可用于数据加密及解密、计算消息摘要、生成随机数等。

第一方面,本发明实施例提供了一种数据处理方法,包括:

针对参与处理的一个或多个分组,建立扩散网络;其中,所述分组为预设长度的元素集合,且每个所述分组至少包含一个元素;所述扩散网络由扩散路径组成,每一条所述扩散路径均连接并指向分组中的元素和/或元素组,元素组为元素的组合;根据所述扩散路径组建扩散式;其中,扩散式由原体和受体组成,所述原体包含所述受体;对所述扩散式进行扩散运算。

第二方面,本发明实施例还提供一种数据处理装置,包括:

扩散网络建立模块,用于针对参与处理的一个或多个分组,建立扩散网络;其中,所述分组为预设长度的元素集合,且每个所述分组至少包含一个元素;所述扩散网络由扩散路径组成,每一条所述扩散路径均连接并指向分组中的元素和/或元素组,元素组为元素的组合;

扩散式建立模块,用于根据所述扩散路径组建扩散式;其中,扩散式由原体和受体组成,所述原体包含所述受体;

扩散运算模块,用于对所述扩散式进行扩散运算。

第三方面,本发明实施例提供了一种数据处理方法,包括:针对参与处理的一个或多个分组,建立扩散网络,其中,所述分组为预设长度的元素集合,且每个分组至少包含一个元素;所述扩散网络由扩散路径组成,每一条所述扩散路径均连接并指向相同和/或不同所述分组中的元素和/或元素组,元素组为元素的组合;根据所述扩散路径组建扩散式,其中,扩散式主要由原体和受体组成;对所述扩散式进行扩散运算。

第四方面,本发明实施例还提供一种数据处理装置,包括:扩散网络建立模块,用于针对参与处理的一个或多个分组,建立扩散网络,其中,所述分组为预设长度的元素集合,且每个所述分组至少包含一个元素;所述扩散网络由扩散路径组成,每一条所述扩散路径均连接并指向相同和/或不同所述分组中的元素和/或元素组,元素组为元素的组合;

扩散式组建模块,用于根据所述扩散路径组建扩散式,其中,扩散式主要由原体和受体组成;

扩散运算模块,用于对所述扩散式进行扩散运算。

本发明实施例所提供的数据处理方法以及装置,针对参与处理的一个或者多个分组,预先建立扩散网络,其中,所述分组为预设长度的元素集合,各分组的预设长度可以相等,也可以不相等,且每个所述分组至少包含一个元素;扩散网络由扩散路径组成,每一条扩散路径均连接并指向相同和/或不同所述分组中的元素和/或元素组;在建立扩散网络之后,根据扩散网络中的扩散路径,组建扩散式,然后对扩散式进行扩散运算。

在数据处理之前,扩散网络、扩散式的建立以及扩散运算都是不确定的,用户可以根据自己的实际需要,建立自己想要的扩散网络、扩散式以及进行扩散运算。对所有扩散式进行扩散运算之后,所得到的数据即为处理之后的数据。

该数据处理方法以及装置,能够实现快速完全的雪崩效应,在对数据进行处理时,具有简单、灵活、快速等特点;可用于数据加密及解密、计算消息摘要、生成随机数等。当本发明用以数据加密时,具有强度高、速度快、抗攻击等特点。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

如无特殊说明,本说明书的附图9~14中,所有大写字母均表示分组名称,框中的数字表示分组中的元素或元素组索引号;元素或元素组上方的“*”号表示此元素或元素组是变化(受影响)的元素或元素组。

图1示出了本发明实施例所提供的一种数据处理方法的流程图;

图2示出了本发明实施例所提供的数据处理方法中,建立扩散网路的具体方法的流程图;

图3示出了本发明实施例所提供的数据处理方法中,组建扩散式的具体方法的流程图;

图4示出了本发明实施例所提供的数据处理方法中,对扩散式进行扩散运算的具体方法流程图;

图5示出了本发明实施例所提供的一种数据处理装置的结构示意图;

图6示出了本发明实施例所提供的数据处理装置中,扩散网络建立模块的具体结构示意图;

图7示出了本发明实施例所提供的数据处理装置中,扩散式建立模块的具体结构示意图;

图8示出了本发明实施例所提供的数据处理装置中,扩散运算模块的具体结构示意图;

图9示出了本发明实施例所提供的数据处理方法及装置中,建立有序扩散网络的详细规则;

图10-1和图10-2示出了本发明实施例所提供的数据处理方法及装置中,建立无序扩散网络的详细规则,图10-1和图10-2是相同规则的不同表现形式;

图11示出了本发明实施例所提供的数据处理方法及装置中,以元素组为单位建立扩散网络的详细规则;

图12-1、图12-2示出了扩散路径的部分连接方式,其中,图号1和图号2表示此处是相连的,并未断开;

图13示出了本发明实施例所提供的数据处理方法及装置中,同一分组的多种元素组织方式;

图14示出了本发明实施例所提供的数据处理方法及装置中扩散网络建立规则的原理图,其中图号1表示扩散方向,“※”号标记的元素为受影响(变化)的元素。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以用各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

为便于对本实施例进行理解,将对本发明实施例所公开的一种数据处理方法及装置进行详细介绍,本发明实施例所提供的数据处理方法及装置,一般能够用于多种领域,例如数据加密及解密、计算消息摘要、生成随机数、数字签名等。

参见图1所示,本发明实施例所提供的数据处理方法包括:

s100:针对参与处理的一个或多个分组,建立扩散网络:

其中,所述分组为预设长度的元素集合,各分组的预设长度可以相等,也可以不相等,且每个所述分组至少包含一个元素;扩散网络由扩散路径组成,每一条扩散路径均连接并指向相同和/或不同所述分组中的元素和/或元素组,元素组为元素的组合。

扩散网络是指在参与处理的所述分组中所建立的所有扩散路径的集合,当分组中的一个或者多个元素和/或元素组发生改变的时候,这个改变会沿着扩散路径扩散,进而影响其他元素和/或元素组的改变。

建立扩散网络时,可以实现不完全的扩散,即任何一个扩散源的改变仅仅会影响部分扩散宿的改变;也可以实现完全扩散,即任何一个扩散源的改变,都会影响所有扩散宿的改变。

扩散源表示扩散的主体,是扩散的发起者;扩散宿表示扩散的客体,是扩散的接收者。

某些元素、元素组可能既是扩散源又是扩散宿。

扩散网络的建立是多样的,可建立为有序(如图9),也可以建立为无序(如图10-1),或者其它情况(例如有序和无序兼用)。图9为图14的转换图。

参见图2所示,本发明实施例还提供一种建立扩散网路的具体方法,具体包括:

s101:对扩散过程划分扩散阶段:

将扩散过程(处理过程)划分为一个或多个扩散阶段(如图9、图10-1等)。划分扩散阶段是为明确整个扩散流程和处理步骤,同一个扩散阶段中的所有扩散路径应当在同一步骤中一同被处理。对扩散阶段的处理顺序不总是严格要求的,有些扩散网络无论按正向或逆向的顺序依次处理均可实现完全扩散(如图9,图10-1);而某些扩散网络对于不同的处理顺序总能实现完全扩散的效果。

s102:在各个扩散阶段中建立扩散路径:

连接相同和/或不同所述分组中的扩散源,并指向相同和/或不同所述分组中的扩散宿,以作为扩散路径。

扩散路径可以是跨分组的(同一条扩散路径连接多个分组之间的元素和/或元素组),也可以不跨分组(同一条扩散路径只连接单个分组中的元素和/或元素组)。

建立扩散路径之前,可根据需要对分组中的元素进行组织,将其组织为元素和/或元素组的组合,对于同一网络中的同一分组,其元素可以有多种组织方式(如图13),或者整个扩散网络都使用同一种组织方式(如图11);或者不对分组中的元素进行组织,直接在所述分组的元素之间建立扩散路径(如图9)。

为区分同一分组中不同的元素和元素组,可以为分组中的元素和元素分配一个索引号。若以元素为单位进行扩散,则索引号被分配到元素上;若以元素组为单元进行扩散,则索引号被分配到元素组上。

可以对所述分组中的全部元素和/或元素组建立扩散路径,也可以根据需要只对所述分组中的部分元素和/或元素组建立扩散路径。同时,为了某些目的(如增加扩散复杂度,或者减少扩散量),可以增加或减少扩散路径。

扩散路径的连接方式是多样的,如图12-1和图12-2。

s103:将在各个扩散阶段所建立的所有扩散路径作为扩散网络:

将在各个扩散阶段中所建立的所有扩散路径的集合作为最终所建立的扩散网络。

本发明还提供另一种扩散网络的建立方法(w):

a:为每个所述分组中的每一个元素和/或元素组分配一个唯一索引号:

若以元素为单位进行扩散,则索引号被分配到元素上;若以元素组为单位进行扩散,则索引号被分配到元素组上;元素或元素组的索引号在同一分组中是唯一的。

b:获取参与处理的分组中的元素和/或元素组数量,并根据所获取的元素和/或元素组的数量计算(通过公式或者其它方法)扩散阶段的数量。

c:在每个所述扩散阶段,根据所述索引号在各分组中的元素和/或元素组之间建立扩散路径:

连接并指向各分组中的元素和/或元素组以作为扩散路径;在同一条扩散路径中,元素和/或元素组之间的连接关系不因其位置的改变而改变。

d:将所有扩散阶段中所建立的所有扩散路径作为扩散网络。

s200:根据扩散路径组建扩散式:

扩散式主要由原体和受体组成。在扩散式中,原体内可以包含受体,也可以不包含受体,可以根据实际需要的自行设定。

具体地,原体是扩散的主体,主要由扩散源组成;受体是扩散的客体,主要由扩散宿组成。组建扩散式时,还可以加入第一参数共同组建(该参数可以是随机数、常数或者其它任何参数)。

参见图3所示,本发明实施例还提供一种组建扩散式的具体方法,具体包括:

s201:根据扩散路径构建原体,具体包括:

以扩散路径为根据,主要将扩散路径所连接的扩散源作为原体。构建原体时,可以根据需要使用扩散路径中的全部或者部分扩散源,还可以加入第二参数(该参数可以是随机数、常数或者其它任何参数)共同构建原体。

扩散路径中的扩散源,通常为扩散路径所连接的元素和/或元素组。

s202:根据扩散路径构建受体,具体包括:

以扩散路径为根据,主要将扩散路径所连接的扩散宿作为受体;构建受体时,可以根据需要使用扩散路径中的全部或者部分扩散宿,还可以加入第三参数(该参数可以是参与处理的分组或者其它分组中的元素和/或元素组,还可以是其它自定义参数)共同构建受体。

扩散路径中的扩散宿,通常为扩散路径所指向的元素和/或元素组。

同时,需要注意的是,上述s201与s202的执行过程无先后顺序,可以先执行s201,也可以先执行s202,还可以并行执行s201和s202。

s300:对所述扩散式进行扩散运算:

在具体实现的时候,对扩散式进行扩散运算是要对扩散式进行处理,将原体扩散到受体中。

扩散运算除使用扩散式中的原体、受体及第一参数(如果存在)外,还可以使用第四参数(该参数可以是随机数、常数或者其它任何参数)共同参与扩散运算。

参见图4所示,本发明实施例还提供一种对扩散式进行扩散运算的具体方法,包括:

s301:以预设的方法主要对原体进行处理:

预设的方法可以根据实际的需要进行具体的设定,可以是一个函数,也可以是一个计算式或者其他的方法。所述函数包括但不限于数学函数及计算机函数。

处理时,以预设的方法主要将扩散式中的原体作为处理的输入(如果存在第一参数及第四参数,则需一同加入)。预设的处理方法应当满足对于输入发生变化时改变其处理结果。若以元素组为单元进行扩散,当元素组中的元素发生变化时,处理方法可以只改变受体中元素组内的部分元素,也可以改变其全部元素。对于输入中的元素组内元素位置的改变,可以根据需要改变或者不改变其处理结果。

s302:使用上述处理的结果更新受体:

使用对原体的处理结果更新受体。当同一条扩散路径中有多个扩算宿时,宜使用多个方法对原体进行处理,并分别更新相应的扩算宿,不宜使用同一个方法处理的结果更新多个扩算宿。

本发明的实施例还提供一种数据处理装置,参见图5所示,本发明实施例所提供的数据处理装置包括:

扩散网络建立模块100:用于针对参与处理的一个或多个分组,建立扩散网络,其中,所述分组为预设长度的元素集合,各分组的预设长度可以相等,也可以不相等,且每个所述分组至少包含一个元素;所述扩散网络由扩散路径组成,每一条所述扩散路径均连接并指向相同和/或不同所述分组中的元素和/或元素组,元素组为元素的组合。

扩散式组建模块200:用于根据所述扩散路径组建扩散式,其中,扩散式主要由原体和受体组成;组建扩散式时,还可以加入第一参数(该参数可以是随机数、常数或者其它任何参数)共同组建;在扩散式中,原体内可以包含受体,也可以不包含受体,可以根据实际需要的自行设定。

扩散运算模块300:用于对所述扩散式进行扩散运算。

本实施例中,扩散网络建立模块100、扩散式建立模块200、扩散运算模块300的具体功能和交互方式,可参见图1对应的实施例的记载,在此不再赘述。

参见图6所示,本发明实施例所提供的数据处理装置中,扩散网络建立模块100具体包括:

扩散阶段划分子模块101:用于将扩散过程划分为一个或多个扩散阶段。

扩散路径建立子模块102:用于在每个所述扩散阶段,连接相同和/或不同所述分组中的扩散源,并指向相同和/或不同所述分组中的扩散宿以作为扩散路径。

扩散网络建立子模块103:用于将在各个扩散阶段所建立的所有扩散路径作为所述扩散网络。

本实施例中,扩散阶段划分子模块101、扩散路径建立子模块102和扩散网络建立子模块103的具体功能和交互方式,可参见图2对应的实施例的记载,在此不再赘述。

此外,本发明还提供另一种扩散网络模块的建立方法,参见扩散网络建立方法w对应的记载,此处不在赘述。

参见图7所示,本发明实施例所提供的数据处理装置中,扩散式组建模块200具体包括:

原体建立子模块201:用于主要将扩散路径中所连接的扩散源作为原体;建立原体时,可以使用扩散路径中所连接的全部或者部分扩散源,还可以加入第二参数(该参数可以是随机数、常数或者其它任何参数)共同建立。

受体建立子模块202:用于主要将扩散路径中所连接的扩散宿作为受体;建立受体时,可以使用扩散路径中的全部或者部分扩散宿,还可以加入第三参数(该参数可以是参与处理的分组或者其它分组中的元素和/或元素组,还可以是其它自定义参数)共同构建受体。

同时,需要注意的是,上述201与202的执行过程无先后顺序,可以先执行201,也可以先执行202,还可以并行执行201和202。

本实施例中,原体建立子模块201、受体建立子模块202的具体功能和交互方式,可参见图3中对应的实施例的记载,在此不再赘述。

参见图8所示,本发明实施例所提供的数据处理装置中,所述扩散运算模块300具体包括:

原体处理子模块301:用于使用预设的方法主要对扩散式中的原体进行处理(如果存在第一参数及第四参数,则需一同处理)。

受体处理子模块302:用于使用上述处理的结果更新受体。

本实施例中,原体处理子模块301、受体处理子模块302的具体功能和交互方式,可参见图4对应的实施例的记载,在此不再赘述。

实施举例

另外,本发明实施例还提供一些将本发明所提供的数据处理方法进行具体应用的实施例,在这些实施例中,仅选取了具有代表性的几个实施案例进行说明。本发明的方案应用较灵活,所提供的这些实施例并不应当成为对本发明具体应用的限制。

如未特殊说明,在下述所有计算式中:“%”表示取余运算、“*”表示乘法运算、“/”表示除法运算、“⊕”表示异或位运算;设处理所需的扩散阶段数量为round,整数r为扩散阶段索引号,每一阶r自增1,r的值域为[0,round);设x是分组名称,整数i是分组的元素索引,则分组中的元素表示为x[i];设分组长度为n,则元素索引i的值域为[s,s+n);设e为计算分组中元素索引的算术表达式,则计算元素索引时需对e进行取余运算,即索引i=(e%n)+s;上述s为当前分组的起始元素索引号,如未特殊说明,s均为0。

为形象地描述扩散式,以下实施例使用数学表达式来表示扩散式。表示法之一:e→r,其中,e表示原体,r表示受体,描述为由e(原体)向r(受体)扩散。以下所有实施例,扩散式中元素和/或元素组之间的“+”表示连接,并不表示数学意义上的相加(取和)。

完美长度:设分组的长度为n,则该分组的完美长度p=2g,g=log2n,需对g进行向上取整。

实施例1:数据加密

本实施例实现对称分组加密,扩散网络建立规则请参见图9所示。路径连接方式请参见图12-1、图12-2,两种连接方式意义相同。此实施例只针对一组明文进行加密。

处理步骤:

s1.设n(n)为分组长度。计算对数g=log2n,并对g进行向上取整,计算完美长度p=2g,计算处理所需扩散阶段的数量round=g+e,e>=2,本例e=2。

s2.取2组长度均为n的明文x和y,i、j分别是x、y的元素索引。

s3.取2组长度均为n的密钥a和b,要求a和b中的元素分别不全部相等,a、b分别是a、b的元素索引。

s4.设整数r是扩散阶段索引号。第一阶r=0。由x、b、y向y的扩散命名为ey,记作ey=x[i]+b[b]+y[j]→y[j];由y、a、x向x的扩散命名为ex,记作ex=y[j]+a[a]+x[i]→x[i]。组建扩散式ey、ex分别为:

x[0]+b[0]+y[0]→y[0],y[0]+a[0]+x[0]→x[0];

x[1]+b[1]+y[1]→y[1],y[1]+a[1]+x[1]→x[1];

x[2]+b[2]+y[2]→y[2],y[2]+a[2]+x[2]→x[2];

x[n-1]+b[n-1]+y[n-1]→y[n-1],y[n-1]+a[n-1]+x[n-1]→x[n-1].

s5.分别取出ey中的原体,使用函数fy处理后,更新ey中的受体,即

y[j]=fy(x[i],b[b],y[j])。

s6.分别取出ex中的原体,使用函数fx处理后,更新ex中的受体,即

x[i]=fx(y[j],a[a],x[i])。

s7.第二阶,r=1。组建扩散式ey、ex分别为:

x[0]+b[0]+y[p/2+0]→y[p/2+0],y[p/2+0]+a[0]+x[0]→x[0];

x[1]+b[1]+y[p/2+1]→y[p/2+1],y[p/2+1]+a[1]+x[1]→x[1];

x[2]+b[2]+y[p/2+2]→y[p/2+2],y[p/2+2]+a[2]+x[2]→x[2];

x[n-1]+b[n-1]+y[p/2+n-1]→y[p/2+n-1],y[p/2+n-1]+a[n-1]+x[n-1]→x[n-1];

然后执行步骤s5、s6。

s8.第三阶,r=2。组建扩散式ey、ex分别为:

x[0]+b[0]+y[p/4+0]→y[p/4+0],y[p/4+0]+a[0]+x[0]→x[0];

x[1]+b[1]+y[p/4+1]→y[p/4+1],y[p/4+1]+a[1]+x[1]→x[1];

x[2]+b[2]+y[p/4+2]→y[p/4+2],y[p/4+2]+a[2]+x[2]→x[2];

x[n-1]+b[n-1]+y[p/4+n-1]→y[p/4+n-1],y[p/4+n-1]+a[n-1]+x[n-1]→x[n-1];

然后执行步骤s5、s6。

s9.第r阶(仅当此实施例中不是第一阶和最后一阶时)。组建扩散式ey、ex分别为:

x[0]+b[0]+y[p/2r+0]→y[p/2r+0],y[p/2r+0]+a[0]+x[0]→x[0];

x[1]+b[1]+y[p/2r+1]→y[p/2r+1],y[p/2r+1]+a[1]+x[1]→x[1];

x[2]+b[2]+y[p/2r+2]→y[p/2r+2],y[p/2r+2]+a[2]+x[2]→x[2];

x[n-1]+b[n-1]+y[p/2r+n-1]→y[p/2r+n-1],y[p/2r+n-1]+a[n-1]+x[n-1]→x[n-1];

然后执行步骤s5、s6。

s10.最后一阶,r=round–1。本阶同s4。

经过一个周期(即对所有扩散路径完成一次扩散运算)处理后,x,y最后的数据就是密文。

以下是函数fy、fx的一种实现:

functionfy(x,b,y):int

returnk[y⊕b]⊕x;

endfy

functionfx(y,a,x):int

returnk[x⊕a]⊕y;

endfx

函数fy和fx均返回一个0~255之间的整数,函数参数x、a、b、y分别为x、a、b、y中的某个元素,其值域为[0,255],k是一个由整数0~255组成的不重复随机集合。

实施例2:数据解密

本实施例实现对称分组解密,网络建立规则与加密相反。此例只针对一组密文进行解密。

处理步骤:

s1.设n(n)为分组长度(n与加密的分组长度相等)。计算对数g=log2n,并对g进行向上取整,计算完美长度p=2g,计算处理所需扩散阶段的数量round=g+e,e>=2,本例e=2。

s2.取2组长度均为n的密文x和y,对应加密的相应输出,i、j分别x、y的元素索引。

s3.取2组长度均为n的密钥a和b,对应加密所使用的密钥,a、b分别a、b的元素索引。

s4.设整数r是扩散阶段索引号,第一阶r=0。由y、a、x向x的扩散命名为ex,记作ex=y[j]+a[a]+x[i]→x[i],由x、b、y向y的扩散命名为ey,记作ey=x[i]+b[b]+y[j]→y[j]。组建扩散式ex、ey分别为:

y[0]+a[0]+x[0]→x[0],x[0]+b[0]+y[0]→y[0];

y[1]+a[1]+x[1]→x[1],x[1]+b[1]+y[1]→y[1];

y[2]+a[2]+x[2]→x[2],x[2]+b[2]+y[2]→y[2];

y[n-1]+a[n-1]+x[n-1]→x[n-1],x[n-1]+b[n-1]+y[n-1]→y[n-1].

s5.分别取出ex中的原体,使用函数_fx处理后,更新ex中的受体,即

x[i]=_fx(y[j],a[a],x[i])。

s6.分别取出ey中的原体,使用函数_fy处理后,更新ey中的受体,即

y[j]=_fy(x[i],b[b],y[j])。

s7.第二阶,r=1。组建扩散式ex、ey分别为:

y[1+0]+a[0]+x[0]→x[0],x[0]+b[0]+y[1+0]→y[1+0];

y[1+1]+a[1]+x[1]→x[1],x[1]+b[1]+y[1+1]→y[1+1];

y[1+2]+a[2]+x[2]→x[2],x[2]+b[2]+y[1+2]→y[1+2];

y[1+n-1]+a[n-1]+x[n-1]→x[n-1],x[n-1]+b[n-1]+y[1+n-1]→y[1+n-1];

然后执行步骤s5、s6。

s8.第三阶,r=2。组建扩散式ex、ey分别为:

y[2+0]+a[0]+x[0]→x[0],x[0]+b[0]+y[2+0]→y[2+0];

y[2+1]+a[1]+x[1]→x[1],x[1]+b[1]+y[2+1]→y[2+1];

y[2+2]+a[2]+x[2]→x[2],x[2]+b[2]+y[2+2]→y[2+2];

y[2+n-1]+a[n-1]+x[n-1]→x[n-1],x[n-1]+b[n-1]+y[2+n-1]→y[2+n-1];

然后执行步骤s5、s6。

s9.第r阶(仅当此实施例中不是第一阶和最后一阶时)。组建扩散式ex、ey分别为:

y[2r-1+0]+a[0]+x[0]→x[0],x[0]+b[0]+y[2r-1+0]→y[2r-1+0];

y[2r-1+1]+a[1]+x[1]→x[1],x[1]+b[1]+y[2r-1+1]→y[2r-1+1];

y[2r-1+2]+a[2]+x[2]→x[2],x[2]+b[2]+y[2r-1+2]→y[2r-1+2];

y[2r-1+n-1]+a[n-1]+x[n-1]→x[n-1],x[n-1]+b[n-1]+y[2r-1+n-1]→y[2r-1+n-1];

然后执行步骤s5、s6。

s10.最后一阶,r=round–1。本阶同s4。

经过一个周期处理后,x,y最后的数据就是明文。函数_fy和_fx分别为加密所使用的函数fy、fx的逆函数。

以下是函数_fx、_fy的一种实现:

function_fx(y,a,x):int

return_k[x⊕y]⊕a;

endfx

function_fy(x,b,y):int

return_k[x⊕y]⊕b;

endfy

函数_fy和_fx均返回一个0~255之间的整数,参数x、a、b、y分别为x、a、b、y中的某个元素,其值域为[0,255]。_k是加密所用的k的逆映射,对于任意整数v(v的值域为[0,255]),_k均满足_k[k[v]]=v。

实施例3:计算消息摘要

本实施例所使用的摘要长度为128位(16字节,可取任意长度),网络建立规则请参见图9,扩散式组建请参考实施例1。

为进一步增加消息摘要的可靠性,特在扩散式中增加常数(作为第一参数)一同组建,并在扩散运算时一同处理这些常数。扩散式表达式变更为:e+k→r,其中,e为原体,k为常数,r为受体。

处理步骤:

s1.设n(n)是分组长度(本例n=8),s是用于存储消息摘要的分组,其长度为2n=16。为方便描述,将s的前半部分命名为sq,后半部分命名sh。i是s的元素索引,sq的元素索引值域为[0,n);sh的元素索引值域为[n,2n)。设k是常数集合,长度为n,h为k的元素索引。

s2.向s中填入元数据,每次计算消息摘要时,均向s中填入固定的元数据。这些元数据是用于计算消息摘要的基础数据,要求该元数据中的元素不全部相等。

s3.计算对数g=log2n,并对g进行向上取整,计算完美长度p=2g,计算处理所需扩散阶段的数量round=g+e,e>=1,本例e=1。根据n=8得知,g=3,p=8,round=4。

s4.从消息源中读取n长度的数据,命名为分组m,j是m的元素索引。

s5.判断实际读取的数据长度l是否等于n。

s6.如果l<n,则计算数据填充量c=min(n,n-l),并对m进行顺序填充(1~c)。具体为从索引c开始,依次向m中填入1、2、3、...、c,函数min返回参数中的最小值。

s7.设整数r是扩散阶段索引号,第一阶r=0。由sq、m、sh向sh的扩散式命名为eh,记作eh=(s[i]+m[j]+s[i+n])+k[h]→s[i+n],由sh、m、sq向sq的扩散命名为eq,记作eq=(s[i+n]+m[j]+s[i])+k[n-h-1]→s[i]。组建扩散式eh、eq分别为:

(s[0]+m[0]+s[08])+k[0]→s[08],(s[08]+m[0]+s[0])+k[7]→s[0];

(s[1]+m[1]+s[09])+k[1]→s[09],(s[09]+m[1]+s[1])+k[6]→s[1];

(s[2]+m[2]+s[10])+k[2]→s[10],(s[10]+m[2]+s[2])+k[5]→s[2];

(s[7]+m[7]+s[15])+k[7]→s[15],(s[15]+m[7]+s[7])+k[0]→s[7].

s8.分别取出eh中的原体和常数,使用函数fh处理后,更新eh中的受体,即

s[i+n]=fh(s[i],m[j],s[i+n],k[h])。

s9.分别取出eq中的原体和常数,使用函数fq处理后,更新eq中的受体,即

s[i]=fq(s[i+n],m[j],s[i],k[n-h-1])。

s10.第二阶,r=1。组建扩散式eh、eq分别为:

(s[4]+m[0]+s[08])+k[0]→s[08],(s[08]+m[0]+s[4])+k[7]→s[4];

(s[5]+m[1]+s[09])+k[1]→s[09],(s[09]+m[1]+s[5])+k[6]→s[5];

(s[6]+m[2]+s[10])+k[2]→s[10],(s[10]+m[2]+s[6])+k[5]→s[6];

(s[3]+m[7]+s[15])+k[7]→s[15],(s[15]+m[7]+s[3])+k[0]→s[3];

然后执行步骤s8、s9。

s11.第三阶,r=2。组建扩散式eh、eq分别为:

(s[2]+m[0]+s[08])+k[0]→s[08],(s[08]+m[0]+s[2])+k[7]→s[2];

(s[3]+m[1]+s[09])+k[1]→s[09],(s[09]+m[1]+s[3])+k[6]→s[3];

(s[4]+m[2]+s[10])+k[2]→s[10],(s[10]+m[2]+s[4])+k[5]→s[4];

(s[1]+m[7]+s[15])+k[7]→s[15],(s[15]+m[7]+s[1])+k[0]→s[1];

然后执行步骤s8、s9。

s12.第四阶,r=3。组建扩散式eh、eq分别为:

(s[1]+m[0]+s[08])+k[0]→s[08],(s[08]+m[0]+s[1])+k[7]→s[1];

(s[2]+m[1]+s[09])+k[1]→s[09],(s[09]+m[1]+s[2])+k[6]→s[2];

(s[3]+m[2]+s[10])+k[2]→s[10],(s[10]+m[2]+s[3])+k[5]→s[3];

(s[0]+m[7]+s[15])+k[7]→s[15],(s[15]+m[7]+s[0])+k[0]→s[0];

然后执行步骤s8、s9。

s13.继续读取消息到m,重复s5至s12,直到整个消息读取完毕。

对所有消息处理完成后,s中的数据便是消息摘要数据,因为此实施例所造成的雪崩效应是完全的,所以对于消息源中的任意一位的改变,均会导致消息摘要完全发生改变。k中的元素不应全部相等。

实施例4:生成随机数

本实施例使用两个长度相等的分组,采用无序规则建立扩散网络,建立规则请参见图10-1或图10-2,x、y中的数据表示元素索引。图中的每一条连接均表示两条扩散路径,两个方向各一条(如图9),此处为简化示图而进行合并。

为强化随机数质量,特将与扩散路径中起点元素索引号顺序相连的前后各1个元素(作为第二参数)加入原体,将扩散路径终点元素(被指向的元素)的对立元素(作为第三参数)加入受体;且在扩散运算时将扩散阶段索引号作为第四参数一同运算。设分组名称为x,分组长度为n,i是x的元素索引,则元素x[i]的对立元素为x[(i+n/2)%n],计算n/2时向上或向下取整。

处理步骤:

s1.设有分组x、y,分组长度均为n,本例n=8。

s2.计算处理所需扩散阶段的数量round,round可根据网络建立规则和n进行调整,本例round可取4。由x、y向y的扩散记作ey=(x[i-1]+x[i]+x[i+1])+(y[j]+y[j+4])→(y[j]+y[j+4]),由y、x向x的扩散记作ex=(y[j-1]+y[j]+y[j+1])+(x[i]+x[i+4])→(x[i]+x[i+4]),i、j为元素索引。i-1表示i的前一个元素,当i=0时,i-1=n-1;i+1表示i的后一个元素,当i=n-1时,i+1=0。

为简化扩散式,本实施例的扩散式将在原体中省略以扩散宿作为扩散源的部分,即ey简化为ey=(x[i-1]+x[i]+x[i+1])→(y[j]+y[j+4]);ex简化为ex=(y[j-1]+y[j]+y[j+1])→(x[i]+x[i+4])。

s3.第1阶,组建扩散式ey、ex分别为:

(x[7]+x[0]+x[1])→(y[3]+y[7]),(y[2]+y[3]+y[4])→(x[0]+x[4]);

(x[0]+x[1]+x[2])→(y[0]+y[4]),(y[7]+y[0]+y[1])→(x[1]+x[5]);

(x[1]+x[2]+x[3])→(y[7]+y[3]),(y[6]+y[7]+y[0])→(x[2]+x[6]);

(x[6]+x[7]+x[0])→(y[5]+y[1]),(y[4]+y[5]+y[6])→(x[7]+x[3]).

s4.分别取出ey中的原体,分别使用函数fy1、fy2处理后,更新ey中受体的各扩散宿,即

y[j]=fy1(x[i-1],x[i],x[i+1],y[j],y[j+4],r),

y[j+4]=fy2(x[i-1],x[i],x[i+1],y[j],y[j+4],r)。

s5.分别取出ex中的原体,分别使用函数fx1、fx2处理后,更新ex中受体的各扩散宿,即

x[i]=fx1(y[j-1],y[j],y[j+1],x[i],x[j+4],r),

x[i+4]=fx2(y[j-1],y[j],y[j+1],x[i],x[j+4],r)。

s6.第2阶,组建扩散式ey、ex分别为:

(x[7]+x[0]+x[1])→(y[5]+y[1]),(y[4]+y[5]+y[6])→(x[0]+x[4]);

(x[0]+x[1]+x[2])→(y[3]+y[7]),(y[2]+y[3]+y[4])→(x[1]+x[5]);

(x[1]+x[2]+x[3])→(y[4]+y[0]),(y[3]+y[4]+y[5])→(x[2]+x[6]);

(x[6]+x[7]+x[0])→(y[1]+y[5]),(y[0]+y[1]+y[2])→(x[7]+x[3]);

然后执行s4、s5。

s7.第3阶,组建扩散式ey、ex分别为:

(x[7]+x[0]+x[1])→(y[2]+y[6]),(y[1]+y[2]+y[3])→(x[0]+x[4]);

(x[0]+x[1]+x[2])→(y[4]+y[0]),(y[3]+y[4]+y[5])→(x[1]+x[5]);

(x[1]+x[2]+x[3])→(y[0]+y[4]),(y[7]+y[0]+y[1])→(x[2]+x[6]);

(x[6]+x[7]+x[0])→(y[3]+y[7]),(y[2]+y[3]+y[4])→(x[7]+x[3]);

然后执行s4、s5。

s6.第4阶,组建扩散式ey、ex分别为:

(x[7]+x[0]+x[1])→(y[0]+y[4]),(y[7]+y[0]+y[1])→(x[0]+x[4]);

(x[0]+x[1]+x[2])→(y[1]+y[5]),(y[0]+y[1]+y[2])→(x[1]+x[5]);

(x[1]+x[2]+x[3])→(y[2]+y[6]),(y[1]+y[2]+y[3])→(x[2]+x[6]);

(x[6]+x[7]+x[0])→(y[7]+y[3]),(y[6]+y[7]+y[0])→(x[7]+x[3]);

然后执行s4、s5。

经过一个周期处理后,所产生的输出即可作为随机数,如需要更多的随机数,可以将上一周期的输出作为下一周期的输入再进行处理。可以使用多种规则建立扩散网络进行交替处理,或在处理过程中加入其他随机数进行扩散运算,以增强随机数质量。注意,生成随机数需高质量的函数来进行扩散运算,否则可能在较短的周期内导致随机数产生循环性重复。

其他实施方式

(一)、流加密和解密:

运用本发明生成密钥流,再使用密钥流进行加密和解密。具体做法为:

1.将初始密钥使用本发明生成一组子密钥;

2.使用上一周期生成的子密钥作为输入,使用本发明再生成子密钥,如此往复;

3.使用生成的子密钥和明文进行异或运算,既可得到密文;使用子密钥(与加密相同)和密文再进行异或运算,既可得到明文。

(二)、分组流加密和解密:

运算本发明生成密钥流,使用所生成的密钥流再结合本发明进行分组加密和解密。此方式可以实现对每一组明文加密都使用不同的密钥(也可以对每组明文的每一阶处理都使用不同的密钥),进一步强化加密效果。

生产密钥流的具体方法可参考实施例4。为保证密文能够被解密,所生成的密钥流不应引入其他不可预测的随机数参与处理。

(三)、非对称加密/解密:

设有处理方法,通过该方法加密后的数据,只能通过其他方法进行解密(两者为互斥关系),反之亦然。

运用本发明,在进行扩散运算的过程中使用其中一种方法进行加密,用其他方法进行解密即可。

设m和m′为互斥方法,通过m(m′)加密后的数据,只能通过m′(m)进行解密。运用本发明,在扩散运算中使用m(m′)进行处理,即可完成加密;再使用m′(m)进行扩散运算,即可完成解密。

(四)、数字签名:

运用本发明计算待签名数据的消息摘要d(d也可以使用其他方法计算)。参考本发明的非对称加密,设m为私有方法,m′为公开方法,用私有方法m对d进行加密,即可完成数字签名。

本发明实施例所提供的数据处理方法和装置的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1