移动端中构造加解密算法的方法、存储介质、设备及系统
技术领域
本发明涉及移动端加解密技术领域,具体来讲是一种移动端中构造加解密算法的方法、存储介质、设备及系统。
背景技术
目前,随着移动互联网的发展,移动端(如手机)应用越来越多,支持各种在线支付、银行卡登录和操作等功能。为了保证重要数据和信息的安全性,移动端应用都会对用户数据及敏感信息进行加密保护。然而,现有的移动端应用数据的保护方案没有PC(personalcomputer,个人计算机)端应用的保护方案成熟,其核心的加密算法(大多都采用比较成熟的公开的算法)容易被黑客所逆向破解,从而可以将其破解的算法拿到PC端来使用。例如,对于直播平台房间人气信息来说,一旦黑客破解了移动端的加密算法,则可以在PC端伪造大量的虚假的移动端用户登录到直播间,从而影响正常的直播平台运营。而导致上述问题的关键原因在于:移动端的加解密算法易被破解,且破解后可以在PC平台上使用,而PC平台的性能比移动端好很多,从而PC平台能够伪造大量的用户。由此可见,现有的移动端中的加解密算法安全性低、易被破解,进而使得应用中的某些数据还是可能会被机器程序来利用伪造。
因此,如何提高加解密算法的安全性并避免加解密算法被破解后在PC端上被机器程序利用来伪造大量数据,是本领域技术人员亟待解决的问题。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种移动端中构造加解密算法的方法、存储介质、设备及系统,使得移动端的加解密算法不易被破解,且即使破解后也无法在PC端被利用来伪造大量数据。
为达到以上目的,本发明采取的技术方案是:提供一种移动端中构造加解密算法的方法,该方法包括以下步骤:
利用NEON指令中的逻辑运算指令设置用于构造加解密算法的基本运算操作,所述基本运算操作包括加法运算操作、减法运算操作、左移运算操作、右移运算操作、异或运算操作;
利用随机选择的某个基本算术运算操作构造出基本加密算法,并根据构造出的基本加密算法,生成与该基本加密算法对应的基本解密算法。
在上述技术方案的基础上,NEON指令中的逻辑运算指令包括:加法指令VADD、减法指令VSUB、左移指令VSHL、右移指令VSHR、按位异或指令VEOR;利用NEON指令中的逻辑运算指令设置用于构造加解密算法的基本运算操作的步骤包括:
设置加法运算操作,使得加法运算操作在执行加法运算时按照以下方式进行:将需要相加的两个原始数据以数组形式保存;分别将两个数组形式的原始数据转换成指定位数的向量;利用NEON指令中的加法指令VADD将两个转换成指定位数的向量进行相加;
设置减法运算操作,使得减法运算操作在执行减法运算时按照以下方式进行:将需要相减的两个原始数据以数组形式保存;分别将两个数组形式的原始数据转换成指定位数的向量;利用NEON指令中的减法指令VSUB将两个转换成指定位数的向量进行相减;
设置左移运算操作,使得左移运算操作在执行左移运算时按照以下方式进行:将需要左移的数据以及左移位数的数据以数组形式保存;分别将两个数组形式的数据转换成指定位数的向量;利用NEON指令中的左移指令VSHL,将需要左移的数据所对应的向量按照左移位数的数据所对应的向量进行左移操作;
设置右移运算操作,使得右移运算操作在执行右移运算时按照以下方式进行:将需要右移的数据以及右移位数的数据以数组形式保存;分别将两个数组形式的数据转换成指定位数的向量;利用NEON指令中的右移指令VSHR,将需要右移的数据所对应的向量按照右移位数的数据所对应的向量进行右移操作;
设置异或运算操作,使得异或运算操作在执行异或运算时按照以下方式进行:将需要异或的两个原始数据以数组形式保存;分别将两个数组形式的原始数据转换成指定位数的向量;利用NEON指令中的按位异或指令VEOR将两个转换成指定位数的向量进行异或。
在上述技术方案的基础上,所述指定位数的向量为8位的向量、16位的向量、32位的向量或64位的向量。
在上述技术方案的基础上,该方法还包括进行复杂加解密算法的构造操作:利用设置好的基本算术运算操作进行随机组合,构造出复杂加密算法;并根据构造出的复杂加密算法,生成与该复杂加密算法对应的复杂解密算法。
本发明还提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述移动端中构造加解密算法的方法的步骤。
本发明还提供一种移动端中构造加解密算法的设备,包括存储器、处理器及存储在存储器上并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述移动端中构造加解密算法的方法的步骤。
本发明还提供一种移动端中构造加解密算法的系统,该系统包括基本运算操作设置单元和基本加解密算法构造单元;所述基本运算操作设置单元用于:利用NEON指令中的逻辑运算指令设置用于构造加解密算法的基本运算操作,所述基本运算操作包括加法运算操作、减法运算操作、左移运算操作、右移运算操作、异或运算操作;所述基本加解密算法构造单元用于:利用随机选择的某个基本算术运算操作构造出基本加密算法,并根据构造出的基本加密算法,生成与该基本加密算法对应的基本解密算法。
在上述技术方案的基础上,NEON指令中的逻辑运算指令包括:加法指令VADD、减法指令VSUB、左移指令VSHL、右移指令VSHR、按位异或指令VEOR;所述基本运算操作设置单元包括加法运算操作设置子单元、减法运算操作设置子单元、左移运算操作设置子单元、右移运算操作设置子单元和异或运算操作设置子单元;
所述加法运算操作设置子单元用于:设置加法运算操作,使得加法运算操作在执行加法运算时按照以下方式进行:将需要相加的两个原始数据以数组形式保存;分别将两个数组形式的原始数据转换成指定位数的向量;利用NEON指令中的加法指令VADD将两个转换成指定位数的向量进行相加;
所述减法运算操作设置子单元用于:设置减法运算操作,使得减法运算操作在执行减法运算时按照以下方式进行:将需要相减的两个原始数据以数组形式保存;分别将两个数组形式的原始数据转换成指定位数的向量;利用NEON指令中的减法指令VSUB将两个转换成指定位数的向量进行相减;
所述左移运算操作设置子单元用于:设置左移运算操作,使得左移运算操作在执行左移运算时按照以下方式进行:将需要左移的数据以及左移位数的数据以数组形式保存;分别将两个数组形式的数据转换成指定位数的向量;利用NEON指令中的左移指令VSHL,将需要左移的数据所对应的向量按照左移位数的数据所对应的向量进行左移操作;
所述右移运算操作设置子单元用于:设置右移运算操作,使得右移运算操作在执行右移运算时按照以下方式进行:将需要右移的数据以及右移位数的数据以数组形式保存;分别将两个数组形式的数据转换成指定位数的向量;利用NEON指令中的右移指令VSHR,将需要右移的数据所对应的向量按照右移位数的数据所对应的向量进行右移操作;
所述异或运算操作设置子单元用于:设置异或运算操作,使得异或运算操作在执行异或运算时按照以下方式进行:将需要异或的两个原始数据以数组形式保存;分别将两个数组形式的原始数据转换成指定位数的向量;利用NEON指令中的按位异或指令VEOR将两个转换成指定位数的向量进行异或。
在上述技术方案的基础上,所述指定位数的向量为8位的向量、16位的向量、32位的向量或64位的向量。
在上述技术方案的基础上,该系统还包括复杂加解密算法构造单元,该复杂加解密算法构造单元用于:利用设置好的基本算术运算操作进行随机组合,构造出复杂加密算法;并根据构造出的复杂加密算法,生成与该复杂加密算法对应的复杂解密算法。
本发明的有益效果在于:
(1)本发明将NEON指令用于设计移动端的加解密算法中,使得基于NEON指令构造出来的加解密算法无法在移动端的设备上执行(NEON指令只有ARM的CPU才具有);并且,由于NEON指令的并行运算能力,可以加速加解密算法的计算,使得加解密运算速度大幅提高,而PC端则因无法使用NEON指令而无法实现大规模并行运算,从而使得基于NEON指令构造出来的加解密算法即使被破解后也无法在PC端被利用来伪造大量数据。
另外,在利用NEON指令设计加解密算法时,是先使用NEON指令来设置用于构造加解密算法的基本算术运算操作,该基本算术运算操作包括加法运算操作、减法运算操作、左移运算操作、右移运算操作以及异或运算操作;然后,利用随机选择的某个基本算术运算操作构造出加密算法,并根据构造出的加密算法,生成与该加密算法对应的解密算法。通过上述方式构造出的加解密算法与现有技术中使用的公开算法相比,加解密算法不易被破解,数据加解密安全性更高。
(2)本发明针对一些数据安全性要求特别高的情况,还设计有复杂加解密算法的构造操作。通过对基本运算操作的无序的随意的多种的重复组合,从而构造出复杂的加解密算法,使得加解密算法被破解的门槛进一步提高。
附图说明
图1为本发明实施例中移动端中构造加解密算法的方法的流程图;
图2为本发明实施例中移动端中构造加解密算法的设备的结构示意图;
图3为本发明实施例中移动端中构造加解密算法的系统的结构框图;
图4为本发明实施例中基本运算操作设置单元的具体结构框图;
图5为本发明另一实施例中移动端中构造加解密算法的系统的结构框图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
本发明的设计思路是提供一种更好的移动端中构造加解密算法的方案,使得移动端的加解密算法不易被破解且只能在移动端的设备上执行。
目前,在移动端上使用最多的处理器是ARM芯片。ARM芯片CPU的指令集和PC端的X86指令集是不一样的;并且,ARM芯片针对于移动端的多媒体和视频编解码、2D、3D的图像运算专门设计了一种并行快速的运算指令集NEON指令集。NEON指令集是专门针对大规模并行运算而设计,是一种单指令多数据引擎。本发明则创造性的将NEON指令用于设计移动端的加解密算法,使得基于NEON指令构造出来的加解密算法无法在移动端的设备上执行(NEON指令只有ARM的CPU才具有);并且,由于NEON指令的并行运算能力,可以加速加解密算法的计算,使得加解密运算速度大幅提高,而PC端则因无法使用NEON指令而无法实现大规模并行运算,从而使得基于NEON指令构造出来的加解密算法即使被破解后也无法在PC端被利用来伪造大量数据。例如,将基于NEON指令构造出来的加解密算法用于防止刷人气的算法中时,即使加解密算法本身被破解了,但该加解密算法在服务器上被使用来进行刷人气时,由于服务器无法执行大量的NEON指令运算,从而无法伪造大量的虚假用户登录到直播间,进而也就无法实现大量刷人气的行为。
与此同时,在利用NEON指令设计加解密算法时,是先使用NEON指令来设置用于构造加解密算法的基本算术运算操作,该基本算术运算操作包括加法运算操作、减法运算操作、左移运算操作、右移运算操作以及异或运算操作;然后,利用随机选择的某个基本算术运算操作构造出加密算法,并根据构造出的加密算法,生成与该加密算法对应的解密算法。同时可以用同样的操作随机的生成多套加解密算法。通过上述方式构造出的加解密算法与现有技术中使用的公开算法相比,加解密算法不易被恶意破解,数据加解密安全性更高。
基于上述设计思路,参见图1所示,本发明实施例提供一种移动端中构造加解密算法的方法,该方法包括以下步骤:
步骤S1、基本运算操作的设置:利用NEON指令中的逻辑运算指令设置用于构造加解密算法的基本运算操作,所述基本运算操作包括加法运算操作、减法运算操作、左移运算操作、右移运算操作、异或运算操作。
可以理解的是,NEON指令中的逻辑运算指令包括:加法指令VADD、减法指令VSUB、左移指令VSHL、右移指令VSHR、按位与指令VAND、按位异或指令VEOR等。一个基本的加解密算法都是由一个个简单的逻辑算术运算所组成,所以可以通过NEON指令提供的基本的运算来构造一些基本的加解密算法的基础运算操作。并且,需要结合NEON指令的单指令多数据流的特性,每个基本的加解密算法都可以并行的对多个数据同时操作,从而运算速度极快。
实际操作中,利用NEON指令中的逻辑运算指令设置用于构造加解密算法的基本运算操作的步骤包括:
1、设置加法运算操作,使得加法运算操作在执行加法运算时按照以下方式进行:将需要相加的两个原始数据以数组形式保存;分别将两个数组形式的原始数据转换成指定位数的向量;利用NEON指令中的加法指令VADD将两个转换成指定位数的向量进行相加。
具体来说,指定位数的向量为8位的向量、16位的向量、32位的向量或64位的向量。以转换成8位的向量为例,所设置的加法运算操作对应的函数代码可如下:
其中,pData和pAdd为两个数组形式的原始数据,数据类型为uint8_t*类型;nDataLen为原始数据的长度,数据类型为uint32_t类型。For循环体中的“uint8x8_tsrcData=vld1_u8(pData)”用于实现将数组形式的原始数据pData转换成一个8位的向量srcData,向量srcData的每个元素的数据类型为uint8_t类型;For循环体中的“uint8x8_taddData=vld1_u8(pAdd)”用于实现将数组形式的原始数据pAdd转换成一个8位的向量addData,向量addData的每个元素的数据类型为uint8_t类型;For循环体中的“uint8x8_tResult=vadd_u8(srcData,addData)”用于实现将向量srcData和向量addData通过NEON指令中的加法指令VADD进行相加操作。
经过上述操作可以看出,利用设置好的加法运算操作执行加法运算时,每次都是同时对N个(N为8个、16个、32个或64个)数值相加,相当于一次性的加了N个数,从而达到了单指令多数据流操作的并行运算目的,运算速度上至少快了N倍。
2、设置减法运算操作,使得减法运算操作在执行减法运算时按照以下方式进行:将需要相减的两个原始数据以数组形式保存;分别将两个数组形式的原始数据转换成指定位数的向量;利用NEON指令中的减法指令VSUB将两个转换成指定位数的向量进行相减。
还是以转换成8位的向量为例,所设置的减法运算操作对应的函数代码可如下:
其中,pData和pSub为两个数组形式的原始数据,数据类型为uint8_t*类型;nDataLen为原始数据的长度,数据类型为uint32_t类型。For循环体中的“uint8x8_tsrcData=vld1_u8(pData)”用于实现将数组形式的原始数据pData转换成一个8位的向量srcData,向量srcData的每个元素的数据类型为uint8_t类型;For循环体中的“uint8x8_tsubData=vld1_u8(pSub)”用于实现将数组形式的原始数据pSub转换成一个8位的向量subData,向量subData的每个元素的数据类型为uint8_t类型;For循环体中的“uint8x8_tResult=vsub_u8(srcData,subData)”用于实现将向量srcData和向量subData通过NEON指令中的减法指令VSUB进行相减操作。
经过上述操作可以看出,利用设置好的减法运算操作执行减法运算时,每次都是同时对N个(N为8个、16个、32个或64个)数值相减,相当于一次性的减了N个数,从而达到了单指令多数据流操作的并行运算目的,运算速度上至少快了N倍。
3、设置左移运算操作,使得左移运算操作在执行左移运算时按照以下方式进行:将需要左移的数据以及左移位数的数据以数组形式保存;分别将两个数组形式的数据转换成指定位数的向量;利用NEON指令中的左移指令VSHL,将需要左移的数据所对应的向量按照左移位数的数据所对应的向量进行左移操作。
还是以转换成8位的向量为例,所设置的左移运算操作对应的函数代码可如下:
其中,pData为数组形式的需要左移的数据,数据类型为uint8_t*类型;pLeft为数组形式的左移位数的数据,数据类型也为uint8_t*类型。For循环体中的“uint8x8_tsrcData=vld1_u8(pData)”用于实现将数组形式的需要左移的数据pData转换成一个8位的向量srcData,向量srcData的每个元素的数据类型为uint8_t类型;For循环体中的“uint8x8_t leftData=vld1_u8(pLeft)”用于实现将数组形式的左移位数的数据pLeft转换成一个8位的向量leftData,向量leftData的每个元素的数据类型为uint8_t类型;For循环体中的“uint8x8_t Result=vshl_u8(srcData,leftData)”用于实现利用NEON指令中的左移指令VSHL,将需要左移的数据所对应的向量按照左移位数的数据所对应的向量进行左移操作。
经过上述操作可以看出,利用设置好的左移运算操作执行左移运算时,每次都是同时对N个(N为8个、16个、32个或64个)数值进行左移,相当于一次性的左移了N个数,从而达到了单指令多数据流操作的并行运算目的,运算速度上至少快了N倍。
4、设置右移运算操作,使得右移运算操作在执行右移运算时按照以下方式进行:将需要右移的数据以及右移位数的数据以数组形式保存;分别将两个数组形式的数据转换成指定位数的向量;利用NEON指令中的右移指令VSHR,将需要右移的数据所对应的向量按照右移位数的数据所对应的向量进行右移操作。
还是以转换成8位的向量为例,所设置的右移运算操作对应的函数代码可如下:
其中,pData为数组形式的需要右移的数据,数据类型为uint8_t*类型;pRight为数组形式的右移位数的数据,数据类型也为uint8_t*类型。For循环体中的“uint8x8_tsrcData=vld1_u8(pData)”用于实现将数组形式的需要右移的数据pData转换成一个8位的向量srcData,向量srcData的每个元素的数据类型为uint8_t类型;For循环体中的“uint8x8_t rightData=vld1_u8(pRight)”用于实现将数组形式的右移位数的数据pRight转换成一个8位的向量rightData,向量rightData的每个元素的数据类型为uint8_t类型;For循环体中的“uint8x8_t Result=vshr_u8(srcData,rightData)”用于实现利用NEON指令中的左移指令VSHR,将需要右移的数据所对应的向量按照右移位数的数据所对应的向量进行右移操作。
经过上述操作可以看出,利用设置好的右移运算操作执行右移运算时,每次都是对N个(N为8个、16个、32个或64个)数值进行右移,相当于同时一次性的右移了N个数,从而达到了单指令多数据流操作的并行运算目的,运算速度上至少快了N倍。
5、设置异或运算操作,使得异或运算操作在执行异或运算时按照以下方式进行:将需要异或的两个原始数据以数组形式保存;分别将两个数组形式的原始数据转换成指定位数的向量;利用NEON指令中的按位异或指令VEOR将两个转换成指定位数的向量进行异或。
还是以转换成8位的向量为例,所设置的异或运算操作对应的函数代码可如下:
其中,pData和pEor为两个数组形式的原始数据,数据类型为uint8_t*类型;nDataLen为原始数据的长度,数据类型为uint32_t类型。For循环体中的“uint8x8_tsrcData=vld1_u8(pData)”用于实现将数组形式的原始数据pData转换成一个8位的向量srcData,向量srcData的每个元素的数据类型为uint8_t类型;For循环体中的“uint8x8_teorData=vld1_u8(pEor)”用于实现将数组形式的原始数据pEor转换成一个8位的向量eorData,向量eorData的每个元素的数据类型为uint8_t类型;For循环体中的“uint8x8_tResult=veor_u8(srcData,eorData)”用于实现将向量srcData和向量eorData通过NEON指令中的按位异或指令VEOR进行异或操作。
经过上述操作可以看出,利用设置好的异或运算操作执行异或运算时,每次都是同时对N个(N为8个、16个、32个或64个)数值进行一一异或,相当于并行进行了N次异或,从而达到了单指令多数据流操作的并行运算目的,运算速度上至少快了N倍。
步骤S2、基本加解密算法的构造:利用随机选择的某个基本算术运算操作构造出基本加密算法,并根据构造出的基本加密算法,生成与该基本加密算法对应的基本解密算法。
可以理解的是,有了用于构造加解密算法的基本运算操作,并且这些基本运算操作都是使用的NEON指令来操作,那么构造的加密算法是基于这些基本运算操作,其最终的整个加解密算法就都是基于NEON指令的。举例来说,利用随机选择的某个基本算术运算操作构造出基本加密算法的过程为:
假设现在需要对客户端发送到服务器的用户行为数据进行加密,其原始数据是:pData=“first page test hit 1234566....”,为一串很长的字符串。
首先,客户端在与服务器进行通信时,可以从服务器获取加密算法所需使用到的一长串的KEY值,此KEY值则也是一长串的字符串,如KEY值是:pKey=“abcdef1234567899......”;然后,则可随机选择基本算术运算操作来构成基本加密算法,如选择加法运算操作构成基本加密算法;再将原始数据pData与KEY值pKey作为相加的两个原始数据去调用构成的基本加密算法(此处即为加法运算操作)来实现数据相加操作的加密,例如:AddEncode(pData,pKey,nDataLen)。同样的,还可以随机选择左移运算操作、异或运算操作、右移运算操作来构造基本加密算法,从而实现对数据进行左移、异或、右移等操作的加密。
当根据构造出的基本加密算法,生成与该基本加密算法对应的基本解密算法时,该基本解密算法是与基本加密算法对等的逆操作。例如,基本加密算法是加法运算操作,则基本解密算法是减法运算操作;基本加密算法是左移运算操作,则基本解密算法是右移运算操作;基本加密算法是异或运算操作,则基本解密算法是再异或一次,即再次进行异或运算操作。
进一步的,在实际操作中,经过上述两个步骤构造出的基本加解密算法是足以满足一些基本安全性要求的需求的,能从一定程度上避免加解密算法被恶意破解。但是,对于一些数据安全性要求特别高的情况,还需进一步提高被破解的门槛。因此,针对上述情况,在执行步骤S2之后,我们还可以进行复杂加解密算法的构造操作:利用上述设置好的基本算术运算操作进行随机组合,构造出复杂加密算法,并根据构造出的复杂加密算法,生成与该复杂加密算法对应的复杂解密算法。
举例来说,利用设置好的基本算术运算操作进行随机组合,所构造出的复杂加密算法为:先对数据进行加法运算操作,然后进左移运算操作,再进行减法操作。相应的复杂加密算法的函数代码为:
AddEncode(pData,pKey1,nDataLen);
LeftEncode(pData,pKey2,nDataLen);
SubEncode(pData,pKey3,nDataLen);
其中,运算所需的KEY值还可以是不同的KEY值,或者是同一个KEY值数据经过转换后的另一个KEY值数据,例如:对KEY值都加上一个数得到一个新的KEY值等,从而使得加解密算法的随机性更高、破解难度更高。
由于根据构造出的复杂加密算法,生成与该复杂加密算法对应的复杂解密算法时,其实质是对复杂加密算法按照从后往前的顺序进行逆操作的过程。因此,针对上述构造出的复杂加密算法,生成的与该复杂加密算法对应的复杂解密算法为:先对数据进行加法运算操作,然后进行右移运算操作,最后进行减法操作。相应的复杂加密算法的函数代码为:
AddEncode(pData,pKey3,nDataLen);
RightEncode(pData,pKey2,nDataLen);
SubEncode(pData,pKey1,nDataLen)。
通过上述操作就完成了对加解密算法的构造,基于对基本运算操作的无序的随意的多种的重复组合,从而构造出复杂的加解密算法。
对应上述的移动端中构造加解密算法的方法,本发明实施例还提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可实现上述各实施例中的移动端中构造加解密算法的方法的步骤。需要说明的是,所述存储介质包括U盘、移动硬盘、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、磁碟或者光盘等各种可以存储程序代码的介质。
另外,参见图2所示,对应上述的移动端中构造加解密算法的方法,本发明实施例还提供一种移动端中构造加解密算法的设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时可实现上述各实施例中的移动端中构造加解密算法的方法的步骤。
参见图3所示,本发明实施例还提供一种移动端中构造加解密算法的系统,该系统包括基本运算操作设置单元和基本加解密算法构造单元。
其中,基本运算操作设置单元用于:利用NEON指令中的逻辑运算指令设置用于构造加解密算法的基本运算操作,所述基本运算操作包括加法运算操作、减法运算操作、左移运算操作、右移运算操作、异或运算操作。基本加解密算法构造单元用于:利用随机选择的某个基本算术运算操作构造出基本加密算法,并根据构造出的基本加密算法,生成与该基本加密算法对应的基本解密算法。
进一步地,参见图4所示,基本运算操作设置单元包括加法运算操作设置子单元、减法运算操作设置子单元、左移运算操作设置子单元、右移运算操作设置子单元和异或运算操作设置子单元。
其中,加法运算操作设置子单元用于:设置加法运算操作,使得加法运算操作在执行加法运算时按照以下方式进行:将需要相加的两个原始数据以数组形式保存;分别将两个数组形式的原始数据转换成指定位数的向量;利用NEON指令中的加法指令VADD将两个转换成指定位数的向量进行相加;
减法运算操作设置子单元用于:设置减法运算操作,使得减法运算操作在执行减法运算时按照以下方式进行:将需要相减的两个原始数据以数组形式保存;分别将两个数组形式的原始数据转换成指定位数的向量;利用NEON指令中的减法指令VSUB将两个转换成指定位数的向量进行相减;
左移运算操作设置子单元用于:设置左移运算操作,使得左移运算操作在执行左移运算时按照以下方式进行:将需要左移的数据以及左移位数的数据以数组形式保存;分别将两个数组形式的数据转换成指定位数的向量;利用NEON指令中左移指令VSHL,将需要左移的数据所对应的向量按照左移位数的数据所对应的向量进行左移操作;
右移运算操作设置子单元用于:设置右移运算操作,使得右移运算操作在执行右移运算时按照以下方式进行:将需要右移的数据以及右移位数的数据以数组形式保存;分别将两个数组形式的数据转换成指定位数的向量;利用NEON指令中的右移指令VSHR,将需要右移的数据所对应的向量按照右移位数的数据所对应的向量进行右移操作;
异或运算操作设置子单元用于:设置异或运算操作,使得异或运算操作在执行异或运算时按照以下方式进行:将需要异或的两个原始数据以数组形式保存;分别将两个数组形式的原始数据转换成指定位数的向量;利用NEON指令中的按位异或指令VEOR将两个转换成指定位数的向量进行异或。
更进一步地,参见图5所示,在另一种实施例中,移动端中构造加解密算法的系统还包括复杂加解密算法构造单元,该复杂加解密算法构造单元用于:利用设置好的基本算术运算操作进行随机组合,构造出复杂加密算法;并根据构造出的复杂加密算法,生成与该复杂加密算法对应的复杂解密算法。
需要说明的是:上述实施例提供的系统在移动端中构造加解密算法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。