一种数据加密和解密的方法及装置与流程

文档序号:11236585阅读:597来源:国知局
一种数据加密和解密的方法及装置与流程

本发明实施例涉及数据加密技术领域,尤其涉及一种数据加密和解密的方法及装置。



背景技术:

随着计算机技术的发展,人们普遍使用计算机进行数据的存储和传输。但不少存储传输的数据具有保密要求,因此需要对存储和传输的数据进行加密处理。

现有技术中,一般的数据加密方法,往往采用单一的加密方式,很容易被破解,从而导致信息安全难以得到保证。在这种情况下,一种复杂、可逆、安全的数据加密方法显得尤为重要。



技术实现要素:

本发明实施例提供一种数据加密和解密的方法及装置,以实现提高数据加密的安全级别的效果。

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

将待加密数据通过第一可逆变换转化为第一数组,所述第一数组元素个数与所述待加密数据的数据位数相同,所述第一数组的每个元素为相同位数的二进制数;

将所述第一数组的每个元素输入到非线性移位寄存器的每个单元;

将所述第一数组进行分组加密算法运算;

将所述分组加密算法的运算结果通过压缩函数进行压缩变换,得到与所述第一数组每个元素位数相同的压缩输出数据;

所述压缩输出数据与所述非线性移位寄存器的溢出单元的第一数组元素进行第一规则运算,并将运算结果输入到补偿单元;

将所述非线性移位寄存器单元的元素按照所述第一可逆变换的逆变换得到加密输出数据。

进一步的,在将所述第一数组进行分组加密算法运算之前,还包括:

判断是否存在加密口令;

当存在加密口令时,将所述加密口令通过第二可逆变换转化为第二数组;

将所述第二数组的每个元素输入到闭环移位寄存器的每个单元,所述第二数组元素个数与所述加密口令的数据位数相同,所述第二数组每个元素为相同位数的二进制数;

相应的,将所述第一数组进行分组加密算法运算,还包括:

将所述第一数组以及所述第二数组和/或计数器数值进行分组加密算法运算,其中,所述计数器数值采用二进制数表示。

进一步的,将所述第一数组以及所述第二数组和/或计数器数值进行分组加密算法运算,包括:

将所述第一数组以及所述第二数组和/或计数器数值进行第二规则运算;

将所述第二规则运算的结果进行分组加密算法运算。

进一步的,将所述第一数组以及所述第二数组和/或计数器数值进行第二规则运算,包括:

从所述非线性移位寄存器以第一预设准则抽取至少一个元素作为第一数组计算元素,以及从所述闭环移位寄存器以第二预设准则抽取至少一个元素作为第二数组计算元素;

将所述第一数组计算元素与所述第二数组计算元素和/或计数器数值进行第二规则运算。

进一步的,所述方法还包括:

从所述非线性移位寄存器以第一预设准则抽取至少一个元素作为第一数组计算元素,包括:

保留所述非线性移位寄存器的溢出单元,从相邻溢出单元的第二个单元截取预设长度,得到第一数组计算元素;

从所述闭环移位寄存器以第二预设准则抽取至少一个元素作为第二数组计算元素,包括:

步骤a、将所述闭环移位寄存器进行一次移位;

步骤b、从所述第二数组的最低元素位截取预设长度,得到第二数组计算元素;

重复进行第一数组计算元素和第二数组计算元素的截取过程,当第一数组的所有元素位都与压缩输出数据进行第一规则运算后,则完成所有的级运算,即完成当前轮运算。

进一步的,完成一轮运算的所有级运算之后,将所述非线性移位寄存器的每个单元所存储的数据倒置,再进入下一轮运算或者终止。

进一步的,所述分组加密算法包括z分组加密算法。

第二方面,本发明实施例还提供了一种基于上述数据加密方法的数据解密方法,该方法包括:

将非线性移位寄存器逆向移位;

压缩输出数据与所述非线性移位寄存器的溢出单元的元素进行第一规则运算的逆运算,并将运算结果输入到补偿单元;

将所述非线性移位寄存器单元的元素按照所述第一可逆变换的逆变换得到解密输出数据。

第三方面,本发明实施例还提供了一种数据加密装置,该装置包括:

第一数组转化模块,用于将待加密数据通过第一可逆变换转化为第一数组;

第一输入存储模块,用于将所述第一数组的每个元素输入到非线性移位寄存器的每个单元,所述第一数组元素个数与所述待加密数据的数据位数相同,所述第一数组的每个元素为相同位数的二进制数;

加密运算模块,用于将所述第一数组进行分组加密算法运算;

压缩模块,用于将所述分组加密算法的运算结果通过压缩函数进行压缩变换,得到与所述第一数组每个元素位数相同的压缩输出数据;

第一规则运算模块,用于所述压缩输出数据与所述非线性移位寄存器的溢出单元的第一数组元素进行第一规则运算,并将运算结果输入到补偿单元;

加密数据输出模块,用于将所述非线性移位寄存器单元的元素按照所述第一可逆变换的逆变换得到加密输出数据。

进一步的,所述装置还包括:

加密口令判断模块,用于判断是否存在加密口令;

第二数组转化模块,用于当存在加密口令时,将所述加密口令通过第二可逆变换转化为第二数组;

第二输入存储模块,用于将所述第二数组的每个元素输入到闭环移位寄存器的每个单元,所述第二数组元素个数与所述加密口令的数据位数相同,所述第二数组每个元素为相同位数的二进制数;

相应的,加密运算模块,还用于:

将所述第一数组以及所述第二数组和/或计数器数值进行分组加密算法运算,其中,所述计数器数值采用二进制数表示。

第四方面,本发明实施例还提供了一种数据解密装置,该装置包括:

非线性移位寄存器控制模块,用于将非线性移位寄存器逆向移位;

解密模块,用于压缩输出数据与所述非线性移位寄存器的溢出单元的元素进行第一规则运算的逆运算,并将运算结果输入到补偿单元;

解密输出数据确定模块,用于将所述非线性移位寄存器单元的元素按照所述第一可逆变换的逆变换得到解密输出数据。

本发明实施例通过将待加密数据转化为可以用来进行加密处理的第一数组,并将第一数组输入至非线性移位寄存器当中,再对第一数组进行分组加密算法加密运算以及将其结果进行压缩变换,使得压缩输出数据能够和第一数组中每个元素的位数相同,再将压缩输出数据与非线性移位寄存器的溢出单元内的第一数组元素通过第一规则运算,将得到的结果输入到补偿单元,这样利用非线性移位寄存器的特征,将第一数组的元素进行一定次数的移位和非线性变换后,得到的非线性移位寄存器上各个单元的结果,通过第一可逆变换的逆变换得到加密输出数据,解决了现有技术中数据加密级别不够,容易被破解的技术问题,实现了提高数据加密的安全级别的效果,并能够使得加密输出数据的格式与待加密数据的格式相同,达到了保留原格式的效果。

附图说明

图1是本发明实施例一提供的数据加密方法的流程图;

图2是本发明实施例二提供的数据加密方法的流程图;

图3是本发明实施例三提供的数据加密方法的流程图;

图4是本发明实施例四提供的数据解密方法的流程图;

图5是本发明实施例五提供的数据加密装置的结构示意图;

图6是本发明实施例六提供的数据解密装置的结构示意图;

图7是本发明优选实施例加密过程示意图;

图8是本发明优选实施例解密过程示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

实施例一

图1是本发明实施例一提供的数据加密方法的流程图,本实施例可适用数据加密情况,该方法可以由本发明实施例所提供的数据加密装置来执行,该装置可以由软件和/或硬件的方式来实现,并可集成于各种可以对数据进行加密的载体中。

如图1所示,所述数据加密方法包括:

s110、将待加密数据通过第一可逆变换转化为第一数组,所述第一数组元素个数与所述待加密数据的数据位数相同,所述第一数组的每个元素为相同位数的二进制数。

其中,待加密数据的格式可以是数字、字母以及数字加字母的格式,也可以是包含符号等的其他格式。第一可逆变换强调了变换过程必须是可逆的,如果是映射,则必须是单射且满射才可以,还可以是其他形式的变换,如待加密数据是10位银行卡号,则可以将其进行第一可逆变换得到一个正整数集合的数组,如10位银行卡号分别为“9876543210”,则可以定义第一可逆变换为:从左至右,第一位数字减9,第二位数字减7,第三位数字减5,第四位数字减3,第五位数字减1,第六位数字加1,第七位数字加3,第八位数字加5,第九位数字加7,第十位数字加9,从而得到十位数字“0123456789”。该可逆变换的逆变换可以在相应位置加上或者减去相应数字,即可得到变换前的数据。

其中,第一数组的元素个数与所述待加密数据的数据位数相同,所述第一数组的每个元素为相同位数的二进制数。如上述示例中,待加密数据的元素个数为10个,第一数组的元素个数也为10个。且所述第一数组的每个元素为相同位数的二进制数,第一数组的每个元素都是二进制数,且各个元素的位数相同,如上述示例中,从0到9转化为二进制数后,可以根据最大的元素“9”确定二进制数的位数,即将“9”转化为“1001”时,二进制位数为4位,则相应的,从0到8也要转化为4位二进制数,如“0”可以转化为“0000”等。相应的,如果xmax是第一数组中数值最大的数,可以利用log2xmax向上取整的方式得到第一数组的二进制位数。

其中,将待加密数据转化为第一数组可以是任意正整数集合,本发明实施例中,优选的,将待加密数据转化为整数环所对应的二进制数组作为第一数组,这样设置的理由是可以再将其转化为第一数组后,尽量的降低第一数组中每个元素的二进制位数。其中,整数环是包括0的连续非负整数集合。

s120、将所述第一数组的每个元素输入到非线性移位寄存器的每个单元。

其中,非线性移位寄存器包含多个单元,其单元个数可以由非线性移位寄存器芯片来决定,本发明实施例中,为了保证第一数组的每个元素都能够输入到非线性移位寄存器的单元中,非线性移位寄存器的型号可以根据本发明实施例所提供的加密方法的使用环境来确定,如当前环境中,第一数组的位数较多,可以选择单元较多的非线性移位寄存器,如当前环境中,第一数组的位数较少,可以选择单元较少的非线性移位寄存器。

s130、将所述第一数组进行分组加密算法运算。

其中,分组加密算法的种类有很多,任意可逆的分组加密算法都可以作为本发明实施例的加密算法。这也是本发明实施例的有益效果之一,就是能够容纳各种符合条件的加密算法,这样,就可以根据用户的需要,进行设置或者调整分组加密算法的种类,提高了本发明实施例的适用范围。

其中,分组加密算法可以针对第一数组进行一次运算,也可以是针对第一数组中的每个元素进行多次分组加密运算,还可以是以一定的规律,将其中的一个或者多个元素进行分组加密运算。具体的,可以结合非线性移位寄存器的每个单元的数据进行抽取和加密处理,并且可以在针对一定的规律的分组加密运算,按照移位寄存器的特点,每次进行移位并抽取和分组加密运算,这样就可以大大提升分组加密运算的安全级别。并且以非线性移位寄存器为基础,与通过软件或者程序来实现的加密运算相比,可以提高数据计算过程中的准确性以及提高数据运算速度。

本发明实施例中,优选的,以z分组加密算法作为加密运算的核心算法。这样设置的好处在于,z分组加密算法具有复杂性、唯一性、可逆性以及安全性的特点,可以确保加密的安全级别。

s140、将所述分组加密算法的运算结果通过压缩函数进行压缩变换,得到与所述第一数组每个元素位数相同的压缩输出数据。

其中,得到的分组加密算法的运算结果的位数可以是与第一数组中每个元素位数相同,也可以不同。无论得到的分组加密算法的运算结果的位数是多少,都可以通过压缩函数得到一个与第一数组每个元素位数相同的二进制数,作为压缩输出数据。

其中,在一轮加密过程中,可以进行一次或者多次压缩变换,得到多个压缩输出数据,并形成压缩输出数据组的形式,与第一数组相对应。

s150、所述压缩输出数据与所述非线性移位寄存器的溢出单元的第一数组元素进行第一规则运算,并将运算结果输入到补偿单元。

其中,第一规则运算可以是加法运算,乘法运算、减法运算等,优选的,可以是压缩输出数据与所述非线性移位寄存器的溢出单元两个数之间的相加求余数过程,如x+y=zmodl,其中x为压缩输出数据,y为非线性移位寄存器的溢出单元的数据,z为第一规则运算的运算结果,l为第一数组的元素个数。溢出单元是经过一次移位之后,不再保存在元数据当中的单元,补偿单元是经过一次移位之后,不再保存在元数据当中的单元。如一个非线性移位寄存器中,有四个数据端,即d0.d1.d2.d3,若d0为溢出单元,则d3为补偿单元,则经过一次移位之后数据就变成d1.d2.d3.s0,其中,s0可以是由d0经过非线性变换之后得到的数据。

s160、将所述压缩输出数据按照所述第一可逆变换的逆变换得到加密输出数据。

将得到的一个或者多个压缩输出数据按照第一可逆变换的逆变换,就可以得到加密输出数据。并且,加密输出数据的格式与输入数据的格式相同。

本发明实施例通过将待加密数据转化为可以用来进行加密处理的第一数组,并将第一数组输入至非线性移位寄存器当中,再对第一数组进行分组加密算法加密运算以及将其结果进行压缩变换,使得压缩输出数据能够和第一数组中每个元素的位数相同,再将压缩输出数据与非线性移位寄存器的溢出单元内的第一数组元素通过第一规则运算,将得到的结果输入到补偿单元,这样利用非线性移位寄存器的特征,将第一数组的元素进行一定次数的移位和非线性变换后,得到的非线性移位寄存器上各个单元的结果,通过第一可逆变换的逆变换得到加密输出数据,解决了现有技术中数据加密级别不够,容易被破解的技术问题,实现了提高数据加密的安全级别的效果,并能够使得加密输出数据的格式与待加密数据的格式相同,达到了保留原格式的效果。

实施例二

图2是本发明实施例二提供的数据加密方法的流程图。本实施例在上述实施例的基础上,进行了进一步的改进,即,在将所述第一数组进行分组加密算法运算之前,还包括:当存在加密口令时,将所述加密口令通过第二可逆变换转化为第二数组;将所述第二数组的每个元素输入到闭环移位寄存器的每个单元,所述第二数组元素个数与所述加密口令的数据位数相同,所述第二数组每个元素为相同位数的二进制数;相应的,将所述第一数组进行分组加密算法运算,还包括:将所述第一数组以及所述第二数组和/或计数器数值进行分组加密算法运算,其中,所述计数器数值采用二进制数表示。

如图2所示,所述数据加密方法包括:

s201、将待加密数据通过第一可逆变换转化为第一数组。

s202、将所述第一数组的每个元素输入到非线性移位寄存器的每个单元。

s203、当存在加密口令时,将所述加密口令通过第二可逆变换转化为第二数组。

其中,所述第二数组元素个数与所述加密口令的数据位数相同,所述第二数组每个元素为相同位数的二进制数。

本发明实施例中,设置加密口令可以是完全独立设定的一种提高数据安全性的方式,而本实施例进一步调用加密口令作为数据加密的参考依据。将其作为数据加密的一部分,不仅提高了数据的安全级别,还可以根据用户的不同,设置与用户对应的加密方法,进而提高了数据加密的个性化使用,避免出现所有人或者所有数据都以一套加密机制进行加密,影响数据的安全性。

本发明实施例中,加密口令可以是字母集、数字集以及其他组合形式,甚至还可以是用户的语音特征或者生物特征,经过一套编码机制编码为字母集或者数字集等。

相应的,第二可逆变换可以与第一可逆变换相同,也可以与第一可逆变换不同。但是其对加密口令的转换机制是与第一口令变换相同的。如,可以把用户输入的密码“a1234”转化为相应的第二数组,数组的每个元素都是位数相同的二进制数。

s204、将所述第二数组的每个元素输入到闭环移位寄存器的每个单元。

闭环移位寄存器是可以实现从“a1、a2、a3、a4”到“a4、a1、a2、a3”或者“a2、a3、a4、a1”的正反向移位的过程。其中,第二数组元素个数与加密口令的数据位数相同,第二数组每个元素为相同位数的二进制数。

值得说明的是,s203和s204并非必须在s201和s202之后执行,s203和s204只要在s205之前执行就可以,而并不限定这两个步骤与s201和s202之间的先后顺序。

s205、将所述第一数组以及所述第二数组和/或计数器数值进行分组加密算法运算,其中,所述计数器数值采用二进制数表示。

本实施例给出了三种技术方案,即第一数组与第二数组、第一数组与计数器数值以及第一数组与第二数组和计数器数值三者同时加入运算。

相应的,采用第一数组与第二数组的方式可以提高加密运算的安全性以及个性化;采用第一数组与计数器数值的方式可以提高加密运算的安全性和稳定性,可以以计数器数值作为参考,更加准确;采用第一数组与第二数组和计数器数值三者同时加入运算则可以兼具上述两种方案的有点。

其中,为了计算的方便,计数器数值采用二进制数表示,避免需要对其进行重新编码,增加加密运算的复杂度。

s206、将所述分组加密算法的运算结果通过压缩函数进行压缩变换,得到与所述第一数组每个元素位数相同的压缩输出数据。

s207、所述压缩输出数据与所述非线性移位寄存器的溢出单元的第一数组元素进行第一规则运算,并将运算结果输入到补偿单元。

s208、将所述非线性移位寄存器单元的元素按照所述第一可逆变换的逆变换得到加密输出数据。

本实施例在上述实施例的基础上,提供了一种将用户设置的加密口令以及计数器数据作为加密算法的因子,在提高加密算法的安全性的同时,还可以提高算法的个性化级别,并且加密口令是独立与数据加密方法设置的,可以提高数据加密方法的兼容性。

值得说明的是,本发明实施例中,如果没有加密口令,也可以读取闭环移位寄存器的数据,在这种情况下,只要将闭环移位寄存器的单元赋值为0即可,这样就可以保证在有无加密口令时,都可以以同样的模式来读取数据,无需采用单独的方式控制是否读取闭环移位寄存器的数据,从而降低了算法的复杂度。

在上述技术方案的基础上,优选的,将所述第一数组以及所述第二数组和/或计数器数值进行分组加密算法运算,包括:将所述第一数组以及所述第二数组和/或计数器数值进行第二规则运算;将所述第二规则运算的结果进行分组加密算法运算。

其中,第二规则运算可以是加运算,减运算等,还可以是复杂的运算机制,本发明实施例,优选的,第二规则运算是加运算,这样结合上述示例中,即便没有加密口令,可以为其赋值为0,这就能够保证其不影响运算结果,保证加密过程的准确性。这样设置的好处是将各因子进行第二规则运算处理后,得到一个数据,再将这个数据进行分组加密算法的运算,可以提高分组加密算法的运算效率。

实施例三

图3是本发明实施例三提供的数据加密方法的流程图。本实施例在上述各实施例的基础上,进行了进一步的改进,即,将所述第一数组以及所述第二数组和/或计数器数值进行第二规则运算,包括:从所述非线性移位寄存器以第一预设准则抽取至少一个元素作为第一数组计算元素,以及从所述闭环移位寄存器以第二预设准则抽取至少一个元素作为第二数组计算元素;将所述第一数组计算元素与所述第二数组计算元素和/或计数器数值进行第二规则运算。

如图3所示,所述数据加密方法包括:

s301、将待加密数据通过第一可逆变换转化为第一数组。

其中,所述第一数组元素个数与所述待加密数据的数据位数相同,所述第一数组的每个元素为相同位数的二进制数。

s302、将所述第一数组的每个元素输入到非线性移位寄存器的每个单元。

s303、当存在加密口令时,将所述加密口令通过第二可逆变换转化为第二数组。

其中,所述第二数组元素个数与所述加密口令的数据位数相同,所述第二数组每个元素为相同位数的二进制数。

s304、将所述第二数组的每个元素输入到闭环移位寄存器的每个单元。

s305、从所述非线性移位寄存器以第一预设准则抽取至少一个元素作为第一数组计算元素,以及从所述闭环移位寄存器以第二预设准则抽取至少一个元素作为第二数组计算元素。

其中,第一预设准则包括:可以是根据第一数组的元素个数确定的一种准则,还可以是根据当前分组加密算法的数据量需求确定的一种准则。如果是以当前第一数组的元素个数,可以抽取奇数位,或者抽取偶数位,或者根据当前第一数组的元素个数收取固定长度的数据位数,如以某一位为起始位,抽取1/2数组长度等。如果是以分组加密算法的数据量需求进行抽取,则可以是根据当前分组加密算法的处理能力,如256位、128位和64位等,还可以是根据当前分组加密算法设置的计算数据量的长度等,还可以是当前分组加密算法的数据运算的需求量等。相应的确定了运算数据长度之后再确定抽取非线性移位寄存器中的哪些位数据进行运算。

相应的,第二预设准则可以与第一运算准则相同,也可以与之不同,但是其采用的机制可以是与第一预设准则相同的。

其中,本发明实施例所提供的第一数组与第二数组的数据抽取方式可以是以某闭环移位寄存器以及非线性移位寄存器的某一个数据输出位作为一个基准点进行抽取的。这样,就可以结合移位寄存器每次移位过程中,针对每个数据元素作为基准点进行抽取及后续运算,这就可以实现以加密口令与待加密数据的自同步特征以及逐码加密的特征,提高数据加密过程中的安全性和准确性,达到了现有技术中未达到的有益效果。

s306、将所述第一数组计算元素与所述第二数组计算元素和/或计数器数值进行第二规则运算。

s307、将所述第二规则运算的结果进行分组加密算法运算。

s308、将所述分组加密算法的运算结果通过压缩函数进行压缩变换,得到与所述第一数组每个元素位数相同的压缩输出数据。

s309、所述压缩输出数据与所述非线性移位寄存器的溢出单元的第一数组元素进行第一规则运算,并将运算结果输入到补偿单元。

s310、将所述非线性移位寄存器单元的元素按照所述第一可逆变换的逆变换得到加密输出数据。

本实施例在上述各实施例的基础上,提供了一种以预设准则进行数据抽取并加密方式,在提高数据加密的安全性的同时,还可以实现自同步以及逐码加密,提高了本发明实施例的数据加密效果。

在上述技术方案的基础上,优选的,从所述非线性移位寄存器以第一预设准则抽取至少一个元素作为第一数组计算元素,包括:

保留所述非线性移位寄存器的溢出单元,从相邻溢出单元的第二个单元截取预设长度,得到第一数组计算元素;

其中,保留是指不从溢出单元进行截取,并不影响非线性移位寄存器的移位。相邻溢出单元的第二个单元是指d0.d1.d2.d3,若d0为溢出单元,则d1所在的单元为第二个单元。

从所述闭环移位寄存器以第二预设准则抽取至少一个元素作为第二数组计算元素,包括:

步骤a、将所述闭环移位寄存器进行一次移位;

其中,如果闭环移位寄存器包含四个单元,当前各单元的数据为s0.s1.s2.s3,则经过一次移位之后,四个单元的数据变为s1.s2.s3.s0,或者s3.s0.s1.s2,具体的移位方向可以根据使用需要去设定。

步骤b、从所述第二数组的最低元素位截取预设长度,得到第二数组计算元素;

重复进行第一数组计算元素和第二数组计算元素的截取过程,当第一数组的所有元素位都与压缩输出数据进行第一规则运算后,则完成所有的级运算,即完成当前轮运算。

其中,分别给出了从非线性移位寄存器和从闭环移位寄存器中抽取数据的方式,即分别从非线性移位寄存器和从闭环移位寄存器中截取预设长度的数据作为加密运算的计算数据。本技术方案中,预设长度即可以是由分组加密算法确定的数据运算量,也可以是经用户设置的数据运算量等。其中步骤a和步骤b表示了一种闭环移位寄存器先运动再截取的过程。本方案中这样设置的好处是可以以固定的截取方式遍历第一数组的所有元素,若第一数组遍历过程中,第二数组已经完成了所有元素的循环,则继续循环截取第二数组的元素。若第一数组遍历过程中,第二数组没有完成所有元素的循环,则以第一数组遍历完成一次作为终止条件。

值得说明的是,当以预设长度截取过程中,如果超过了第一数组或者第二数组的元素位数,则在超过部分补充数据“0”即可,当以预设长度截取过程中,如果少于第一数组或者第二数组的元素位数时,则截取到预设长度截止即可。

本技术方案还提供了一种将压缩输出数据作为非线性移位寄存器进行补位数据的方案,这样设置的好处是可以将压缩输出数据存储并以备继续使用该压缩输出数据,简化了加密算法的结构的同时,还提高了数据的利用率和复杂度。

本技术方案还提供了一种级运算和轮运算的概念,在确定了第一数组和第二数组之后,以对第一数组的每个元素的计算(或者以第一数组的每个元素为基础进行的运算)作为级运算,完成第一数组的所有元素的运算,即完成了一轮运算,也可以理解为,轮运算包含级运算。

其中,级运算的次数可以根据第一数组的元素个数来确定。轮运算的次数可以由用户来设定或者默认设置,例如可以是3次、4次或者更多,本发明实施例中,优选的,可以设置为大于等于3次,这样设置是既考虑到加密算法的安全性,又可以兼顾加密算法的运算时间,避免时间过于冗长,影响用户的体验。

在上述各技术方案的基础上,优选的,完成一轮运算的所有级运算之后,将所述非线性移位寄存器的每个单元所存储的数据倒置,再进入下一轮运算或者终止。这样设置的好处是避免反向截取数据带来的复杂性,可以使两个移位寄存器同步进行移位输出。现实场景中,如算法设计时确定采用正反交替运动的轮间变换方法,即每轮之间改变非线性反馈移位寄存器的运动方向,但为了实现方便,算法中采用了非线性反馈移位寄存器的各输入输出端倒序存储数据的等价办法。每轮状态的倒序、运动方向不变的方式,理论上与每轮状态不倒序、运动方向相反的方式等价。

实施例四

图4是本发明实施例四提供的数据解密方法的流程图,本实施例可适用数据解密情况,该方法可以由本发明实施例所提供的数据解密装置来执行,该装置可以由软件和/或硬件的方式来实现,并可集成于各种可以对数据进行解密的载体中。该方法是基于上述各实施例中数据加密方法对应的数据解密方法,具体的解密过程与上述各实施例的加密过程相对应,具有与之相应的有益效果。

如图4所示,所述数据解密方法包括:

s410、将非线性移位寄存器逆向移位。

s420、压缩输出数据与所述非线性移位寄存器的溢出单元的元素进行第一规则运算的逆运算,并将运算结果输入到补偿单元。

其中,压缩输出数据是由上述各实施例中的获取方式得到的。结合上述示例,第一规则运算的逆运算可以是,将x+y=zmodl的运算过程逆运算,即z-y=xmodl的运算过程。

s430、将所述非线性移位寄存器单元的元素按照所述第一可逆变换的逆变换得到解密输出数据。

相应的,在完成数据加密过程所有轮运算的数据解密过程之后,在非线性移位寄存器的每个单元中的数据即为第一数组的各个元素,将各个元素通过第一可逆变换的逆变换就能够得到最原始的待加密数据,从而实现数据解密的过程。

本发明实施例是上述各实施例中数据加密的方法所对应的数据解密方法,将上述各实施例中的非线性移位寄存器采用逆向移位,并按照数据加密过程的第一数组的截取方式进行截取第一数组计算数据,经过分组加密运算和压缩函数压缩处理后,将得到的结果和此时非线性移位寄存器的溢出单元的元素进行第一规则运算的逆运算处理,将处理结果输入至此时非线性移位寄存器的补偿单元,在完成所有次数的运算后,既可以得到原有的待加密数据,实现数据的解密过程,解决了现有技术中数据加密级别不够,容易被破解的技术问题,实现了提高数据加密的安全级别的效果。

实施例五

图5是本发明实施例五提供的数据加密装置的结构示意图。如图5所示,所述数据加密装置,包括:

第一数组转化模块510,用于将待加密数据通过第一可逆变换转化为第一数组,所述第一数组元素个数与所述待加密数据的数据位数相同,所述第一数组的每个元素为相同位数的二进制数;

第一数组存储模块520,用于将所述第一数组的每个元素输入到非线性移位寄存器的每个单元;

加密运算模块530,用于将所述第一数组进行分组加密算法运算;

压缩模块540,用于将所述分组加密算法的运算结果通过压缩函数进行压缩变换,得到与所述第一数组每个元素位数相同的压缩输出数据;

第一规则运算模块550,用于所述压缩输出数据与所述非线性移位寄存器的溢出单元的第一数组元素进行第一规则运算,并将运算结果输入到补偿单元

加密数据输出模块560,用于将所述非线性移位寄存器单元的元素按照所述第一可逆变换的逆变换得到加密输出数据。

本发明实施例通过将待加密数据转化为可以用来进行加密处理的第一数组,并将第一数组输入至非线性移位寄存器当中,再对第一数组进行分组加密算法加密运算以及将其结果进行压缩变换,使得压缩输出数据能够和第一数组中每个元素的位数相同,再将压缩输出数据与非线性移位寄存器的溢出单元内的第一数组元素通过第一规则运算,将得到的结果输入到补偿单元,这样利用非线性移位寄存器的特征,将第一数组的元素进行一定次数的移位和非线性变换后,得到的非线性移位寄存器上各个单元的结果,通过第一可逆变换的逆变换得到加密输出数据,解决了现有技术中数据加密级别不够,容易被破解的技术问题,实现了提高数据加密的安全级别的效果,并能够使得加密输出数据的格式与待加密数据的格式相同,达到了保留原格式的效果。

在上述各实施例的基础上,优选的,还包括:

加密口令判断模块,用于判断是否存在加密口令;

第二数组转化模块,用于当存在加密口令时,将所述加密口令通过第二可逆变换转化为第二数组;

第二输入存储模块,用于将所述第二数组的每个元素输入到闭环移位寄存器的每个单元,所述第二数组元素个数与所述加密口令的数据位数相同,所述第二数组每个元素为相同位数的二进制数;

相应的,加密运算模块530,还用于:

将所述第一数组以及所述第二数组和/或计数器数值进行分组加密算法运算,其中,所述计数器数值采用二进制数表示。

上述产品可执行本发明任意实施例所提供的数据加密方法,具备执行方法相应的功能模块和有益效果。

实施例六

图6是本发明实施例六提供的数据解密装置的结构示意图。如图6所示,所述数据解密装置,包括:

非线性移位寄存器控制模块610,用于将非线性移位寄存器逆向移位。

解密模块620,用于压缩输出数据与所述非线性移位寄存器的溢出单元的元素进行第一规则运算的逆运算,并将运算结果输入到补偿单元。

解密输出数据确定模块630,用于将所述非线性移位寄存器单元的元素按照所述第一可逆变换的逆变换得到解密输出数据。本发明实施例通过上述各实施例中数据加密装置所对应的数据解密装置,将上述各实施例中的数据加密过程进行逆转化,既可以得到原有的待加密数据,实现数据的解密过程,解决了现有技术中数据加密级别不够,容易被破解的技术问题,实现了提高数据加密的安全级别的效果。

上述产品可执行本发明任意实施例所提供的数据解密方法,具备执行方法相应的功能模块和有益效果。

优选实施例

图7是本发明优选实施例加密过程示意图,本实施例在上述各实施例的基础上,提供了一种数据加密方法的优选实施例,如图7所示:

将待加密数据转化为第一数组输入到非线性移位寄存器中,并将加密口令转化为第二数组输入到闭环移位寄存器中之后,分别截取预设长度的数据,并和计数器数据进行第二规则运算。

其中,0到m-1表示的是闭环移位寄存器中存储的第二数组中个元素的位数,共m位,可以看到,闭环移位寄存器是先运动,后截取数据的,所以第0位已经运动至最后一位,其截取方式是以最低位向前截取预设长度,作为第二数组计算元素a。

其中,0到n-1表示的是非线性移位寄存器中存储的第一数组中个元素的位数,共n位,其截取方式是以次高位向后截取预设长度,作为第一数组计算元素b。

将第一数组计算元素b和第二数组计算元素a以及计数器数据进行第二规则运算,得到第二规则运算输出数据c。

再将第二规则运算输出数据c进行分组加密算法运算,得到分组加密算法运算结果d。

将分组加密算法运算结果d进行压缩函数的压缩运算,得到压缩输出数据e。

将压缩输出数据e与非线性移位寄存器的最高位数据x相加并求余数,如x+e=fmodn,得到第一规则运算输出结果f,将f作为非线性移位寄存器的最低位,原非线性移位寄存器的各位次数据依次上移,即得到一级运算的输出结果。

完成所有级运算后及为完成当前轮运算。

图8是本发明优选实施例解密过程示意图,如图8所示,可以在闭环移位寄存器和非线性移位寄存器的数据截取方式不变的情况下,仅变换非线性移位寄存器的移位方向,以及采用第一规则运算的逆运算的形式,即f-e=xmodn,就可以得到非线性移位寄存器的补偿单元(即数据加密过程中的溢出单元)的数据,从而得到数据解密过程以及最终得到解密数据。其中,可以以计数器数据为解密步骤的确定方式,如在加密过程中,计数器由0一直加计数255,则在解密过程中,计数器数据由255减计数到0时,则表示完成了解密算法的所有计算。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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