信息加密方法

文档序号:7732445阅读:503来源:国知局
专利名称:信息加密方法
技术领域
本发明涉及信息加密技术领域,更具体地讲,本发明涉及一种利用魔方旋转原理进行加密的方法,属于对称密钥的加密方法。
背景技术
信息加密方法一般分为对称密钥加密方法和非对称密钥(公开密钥)加密方法两种。随着现代通信信息量不断加大,人们对信息安全的认识和要求越来越高。为了保证传 输过程中通信内容不会泄密,可供使用的信息加密传输方法有很多。由于公知的非对称密钥方法(如RSA,ECC等)计算强度太大并不适合大数据量通信时使用,相对而言对称密钥加密方法更适合一些。常用的对称密钥加密方法有DES、AES等标准公开的算法,但是这些公开算法的计算量非常大,加密和解密的时间成本很高,也不利于大数据量通信的加密。为了提高计算速度,出现了各种基于硬件的DES加密芯片,系统在提高加密运算速度的同时也增加了系统的经济成本。下面对DES和AES的安全性和效率进行比较。自DES算法1977年首次公诸于世以来,学术界对其进行了深入的研究,围绕它的安全性展开了激烈的争论。在技术上,对DES的批评主要集中在以下3个方面I、作为分组密码,DES的加密单位仅有64位二进制,这对于数据传输来说太小,因为每个分组仅含8个字符,而且其中某些位还要用于奇偶校验或其它通信开销。2、DES的密钥的位数太短,只有56比特,而且各次迭代中使用的密钥kf是递推产生的,这种相关必然降低密码体制的安全性。在现有技术下用穷举法寻找密钥已趋于可行。1999年在电子前沿组织(Electronic Frontier Foundation, EFF)进行的一次测试中,只用了不到3天的时间就破解了一个DES加密系统。因此,若要保护10年以上的数据最好不要采用DES算法。3、DES不能对抗差分和线性密码分析。相对DES算法来说,AES算法无疑解决了上述问题,主要表现在如下几方面I、AES标准支持可变分组长度,分组长度可设定为32比特的任意倍数,最小值为128比特,最大值为256比特。2、AES的密钥长度比DES大,它也可设定为32比特的任意倍数,最小值为128比特,最大值为256比特,用穷举法不可能破解。假设取密钥长度为128比特,那么要破解2128个可能的密钥的密文平均要尝试的密钥的个数为2127,一台计算机用穷举法破解大概需要的时间为1000年。可以看出这实际上是不可行的。在可预计的将来,如果计算机的运行速度没有根本性的提高,用穷举法破解AES密钥几乎不可能。3、AES算法的设计策略是宽轨迹策略(Wide Trail Strategy,WTS),WTS是针对差分分析和线性分析提出的,可对抗差分密码分析和线性密码分析。根据DES和AES的算法实现的程序实测结果,AES算法性能大约为DES算法的3倍,经优化的AES算法的性能比DES算法性能大约高5倍左右。
DES和AES算法已经公布多年,随着时间的推移,已有多种有效破解DES和AES的方法公布。虽然AES算法的安全性比DES算法的安全性有大幅度提升,但原因是因为密钥长度的加长。虽然AES算法性能比DES算法性能高,但并没有达到数量级的提高,两者性能还是处于同一个数量级的水平。随着通信量的加大,需要一种高效率、低成本并且高强度的信息加密方法,以支持大数据量通信。

发明内容
本发明针对DES、AES等方法的不足之处,提供一种高强度、高效率、低成本的对称密钥加密方法,主要解决信息在传输过程中被非法截获而被还原的问题。
根据本发明的一方面,提供一种信息加密方法,该方法包括将需要加密的信息根据与所述信息中的每个字符所对应的ASCII码按位展开为LI个字节,并存储在MXN大小的数组Matrix [M] [N]中,其中,MXN = LI X 8,M、N、LI均为整数;任取随机密钥K,密钥长度为1^2个字节,依次使用密钥1(中的每一个字节1([1],0<1<1^2-1,根据字节1([1]的位数据,对数组Matrix [M] [N]进行移位操作;将移位后的数组Matrix [M] [N]按位还原为LI个字节数据,完成加密过程。优选地,在将需要加密的信息的LI个字节存储在数组Matrix[M] [N]中之前,可使用密钥K对所述LI个字节进行数据预处理,使得需要加密的信息与原文信息不同。优选地,如果LI = 8, L2 = 8,则M = 8, N = 8,并且所述移位操作可包括循环取密钥K的每一个字节K [I],0< I <7,设置循环变量I、J、X、Y,I为字节K [I]的序号,J为字节K[I]的第O、I位所对应的十进制数值,X为字节Κ[Ι]的第2、3、4位所对应的十进制数值,Y为字节Κ[Ι]的5、6、7位所对应的十进制数值;设置临时数组Τ,将数组Matrix[8]的第I行的8个数据顺序存储在临时数组T中,将数组Matrix[8] [8]的第2J列的8个数据顺序移位至数组Matrix [8] [8]的第I行,将数组Matrix [8] [8]的第X行的8个数据顺序移位至数组Matrix[8] [8]的第2J列,将数组Matrix[8] [8]的第Y列的8个数据顺序移位至数组Matrix [8] [8]的第X行,将存储在临时数组T中的8个数据顺序存储在数组Matrix[8] [8]的第 Y 列中。优选地,数据预处理可包括将8字节信息的每一个字节与8字节密钥K的相应字节进行异或运算。优选地,如果8 < LI < 16,则M = 8,N = LI,并且所述移位操作可包括循环取密钥K的每一个字节K [I],O ( I ( L2-1,设置循环变量I、J、X、Y,I为字节K [I]的序号,J为字节K[I]的第0、1位所对应的十进制数值,X为字节Κ[Ι]的第2、3、4位所对应的十进制数值,Y为字节Κ[Ι]的5、6、7位所对应的十进制数值,其中,如果密钥长度L2 > 8,则当I彡8时,将I设置为等于当前循环次数取8的模;设置临时数组Τ,将数组Matrix [8] [LI]的左侧8X8子数组的第I行的8个数据存储在临时数组T中,将数组Matrix[8] [LI]的第(2J+L1-8)列的8个数据移位至数组Matrix[8] [LI]的左侧8X8子数组的第I行,将数组Matrix[8] [LI]的左侧8X8子数组的第X行的8个数据移位至数组Matrix[8] [LI]的第(2J+L1-8)列,将数组Matrix [8] [LI]的第(Y+L1-8)列的8个数据移位至数组Matrix [8][LI]的左侧8X8子数组的第X行,将存储在临时数组T中的8个数据依次存储在数组Matrix[8] [LI]的第(Y+Ll-8)列中。优选地,数据预处理可包括将所述信息的每一个字节与密钥K的相应字节相加,相加的结果如果大于255,则溢出后只取最后一个字节,其中,如果密钥的长度L2不等于LI,则根据密钥K的长度L2,将密钥K拼接或裁减为LI字节。优选地,如果LI = 32,则M = 16, N = 16,并且所述移位操作可包括循环取密钥K的每一个字节Κ[Ι],0< I < L2-1,设置循环变量I、X、Y,I为字节Κ[Ι]的序号,X为字节K [I]的高4位所对应的十进制数值,Y为字节K [I]的低4位所对应的十进制数值,其中,如果密钥长度L2 > 16,则当I彡16时,将I设置为等于当前循环次数取16的模;将数组Matrix [16] [16]的第I行向左或向右循环旋转X个数据,将数组Matrix [16] [16]的第J列向上或向下循环旋转Y个数据。优选地,数据预处理可包括所述信息的每一个字节与密钥K的相应字节相减,相减的结果如果小于0,则溢出后只取最后一个字节,其中,如果密钥的长度L2不等于32,则根据密钥K的长度L2,将密钥K拼接或裁减为32字节。优选地,如果LI = 32,则设置数组Matrix[8X32],将32字节的所述信息按位依次填入数组Matrix[8X32],所述移位操作可包括循环取密钥K的每一个字节K[I],
O^ I ^ L2-1,设置循环变量J、X、Y,J为字节K [I]的第2-7位所对应的十进制数值,X为字节K [I]的高4位所对应的十进制数值,Y为字节K [I]的低4位所对应的十进制数值;将数组Matrix[8X 32]的第4J个数据开始的X个数据向左或向右循环旋转Y个数据。优选地,数据预处理可包括将所述信息的每一个字节Data[I]与密钥的相应字节K[I% L2]相加,I < I ( L1-1,所得结果再与所述信息的前I-I个字节的累加和相加,相加的结果如果大于255,溢出后只取最后一个字节,其中,1% L2表示循环变量I对L2取模。本发明的加密方法不限定密钥长度和信息分组的长度,具有比较大的灵活性,算法的选取完全取决于实施的需要,更增加了破解的难度。当信息量比较大时,可将信息分组长度设的更大一点,运算效率可成倍提高。


图I是本发明的数据加密方法的总体框图。图2是本发明的数据加密方法的总体流程图。图3是本发明实施例I的加密过程的示意图。图4是本发明实施例2的加密过程的示意图。图5是本发明实施例3的加密过程的示意图。图6是本发明实施例4的加密过程的示意图。
具体实施例方式通过结合附图,从下面的实施例的描述中,本发明这些和/或其它方面及优点将会变得清楚,并且更易于理解,其中图I是根据本发明的数据加密/解密方法的总体框图。如图I所示,根据本发明的信息加密方法的主要技术构思包括以下内容。在信息发送方10,通信节点A可包括加密模块11,加密模块11用于对发送的信息进行加密。加密模块11可以是软件模块,也可以是硬件模块。加密模块11随机生成长度为Lk (Lk彡8)字节的密钥Key,密钥Key可存储在加密模块11中。加密模块11所使用的加密算法Enc (Key, Msg)利用密钥的随机性对信息进行移位,来对信息加密,其中,Key为密钥,Msg为要进行加密的信息。解密算法Dec (Key,Msg)执行加密算法Enc (Key, Msg)的逆过程。其中,Key为密钥的内容,Msg为要进行加密信息。加密过程具有非常高的时间效率。通信节点A在发送信息之前根据与所述信息中的每个字符所对应的ASCII码按位展开为LI个字节,LI即为所述信息中的字符的数量。具体地讲,对于将要加密的信息中的每个字符m,m具有唯一的ASCII码二进制数(共8位),因此一个信息字符对应于一个字节的ASCII码二进制数。通信节点A使用加密模块11对展开的每一个字节按位进行移位加密。然后,通信节点A使用加密模块11对每一个信息字节按位进行移位加密,并将加密的信息通过通信链路发送到通信节点B。通信节点B可获得加密的信息。
如果所述信息中的字符的数量LI较大(例如大于特定值),则还可先将信息分割成信息字节分组,字节分组长度为Lm(Lm ^ 8),即,每个字节分组具有Lm个字节。由Lm个字符构成的信息字节分组对应于长度为Lm的字节分组。因此,每一个信息字节分组可以看作是字符数量较少的待加密的信息的展开字节。然后,通信节点A使用加密模块11对每一个信息字节分组中的每个字节按位进行移位加密,并将加密的信息通过通信链路发送到通信节点B。在信息接收方20,通信节点B可包括解密模块21,用于对接收到的加密信息进行解密。解密模块21可以是软件模块,也可以是硬件模块。解密模块21使用解密算法Dec (Key, Msg’ )对接收到的加密信息进行解密。解密算法Dec (Key,Msg’ )执行加密算法Enc (Key7Msg)的逆过程,其中,Key为密钥的内容,Msg’为加密的信息。解密过程也具有非常高的时间效率。通信节点B接收到加密的信息后,使用解密模块21对加密的信息进行解密,获得解密的ASCII码二进制数,进而获得对应的信息原文。在信息被分割为多个信息字节分组的情况下,通信节点B按约定的长度Lm(Lm ^ 8)将该信息进行字节分组,依次对每一个信息字节分组进行解密,再将各个解密的信息串接起来,进而获得对应的信息原文。图2是根据本发明的数据加密方法的总体流程图。参照图2,在步骤201,将需要加密的信息根据与所述信息中的每个字符所对应的ASCII码按位展开为LI个字节,并存储在MXN大小的数组Matrix [M] [N]中,其中,MXN =L1X8,M、N、L1均为整数。在步骤202,任取随机密钥Key (以下简称为密钥K),密钥长度为L2个字节,L2可以任意。依次使用密钥K中的每一个字节Κ[Ι],0< I SL2-1,根据字节K[I]的位数据,对数组Matrix [Μ] [N]进行移位操作。移位操作将循环L2次。在步骤203,将移位后的数组Matrix [M] [N]按位还原为LI个字节数据,加密过程结束。在解密过程中,按照与加密操作相反的操作得到对应的ASCII码,进而可获得信息原文。优选的是,在将需要加密的信息的LI个字节存储在MXN大小的数组Matrix[M][N]中之前,可使用密钥K对LI个字节进行数据预处理,使得需要加密的信息与原文信息不同。可使用多种数据预处理方式,将结合具体实施例进行详细描述。实施例I下面描述根据本发明实施例I的信息加密方法。图3示出了根据本发明实施例I的加密过程的示意图。在本实施例中,以8字节长度的密钥和8字节长度的信息分组为例,具体加密过程如下(I)将8字节信息的每一个字节与8字节密钥的相应字节进行数据预处理,具体地,可将8字节信息的每一个字节与8字节密钥的相应字节进行异或运算。(2)设置一个8X8字节的数组Matrix[8] [8](即,M = 8, N = 8),把8字节预处理后的64个位数据按顺序填入该数组内。(3)循环取密钥K的每一个字节K [I],0彡I彡7,设置循环变量I、J、X、Y,I为字节K[I]的序号,J=字节Κ[Ι]的第O、I位所对应的十进制数值(例如,Κ[Ι]的第0、1位为10,则J = I X 2^0X2° = 2),乂为字节1([1]的第2、3、4位所对应的十进制数值(例如,字节 Κ[Ι]的第 2、3、4 位为 101,则 X = 1Χ22+0Χ21+1Χ2° = 5),丫为字节1([1]的 5、6、7 位所对应的十进制数值。可以得知,O < 2J、X、Y < 7。(4)将数组Matrix [8] [8]的第I行的8个数据、数组Matrix [8] [8]的第2J列的8个数据分别交换,将数组Matrix [8] [8]的第X行的8个数据以及数组Matrix [8] [8]的第Y列的8个数据分别交换。例如,可设置临时数组T,将数组Matrix[8] [8]的第I行的8个数据顺序存储在临时数组T中,将数组Matrix [8] [8]的第2J列的8个数据顺序移位至数组Matrix [8] [8]的第I行,将数组Matrix [8] [8]的第X行的8个数据顺序移位至数组Matrix [8] [8]的第2J列,将数组Matrix [8] [8]的第Y列的8个数据顺序移位至数组Matrix [8] [8]的第X行,将·存储在临时数组T中的8个数据顺序存储在数组Matrix[8] [8]的第Y列中。为描述方便,可定义“T = I”表示T的8个数据等于数组Matrix[8] [8]的第I行的8个数据。按照以下顺序完成数据移位交换过程T = I,I = 2J,2J = X,X = Y,Y = T。(5)将Matrix [8] [8]的64个数据还原成8个字节,完成加密过程。在解密过程中,按照与加密过程相反的操作得到可获得信息原文。实施例2下面描述根据本发明实施例2的信息加密方法。图4示出了根据本发明实施例2的加密过程的示意图。设密钥长度为L2字节,信息字节分组长度为LI (8彡LI彡16)字节,则M = 8,N=LI。本实施例的步骤与实施例I的步骤不同之处在于数据预处理和移位操作,因此仅对数据预处理和移位操作进行描述。数据预处理将信息字节分组的每一个字节与密钥的相应字节相加,相加的结果如果大于255,则溢出后只取最后一个字节。如果密钥的长度L2不等于LI,则可根据密钥的长度L2,将密钥拼接或裁减为LI字节。移位操作循环取密钥K的每一个字节K[I],0 ( I ( 7,设置循环变量I、J、X、Y,I为字节K[I]的序号,J为字节Κ[Ι]的第0、1位所对应的十进制数值,X为字节Κ[Ι]的第2、3、4位所对应的十进制数值,Y为字节K[I]的5、6、7位所对应的十进制数值;设置数组Matrix[8] [LI],将Matrix[8] [LI]分为左侧8X8子数组和右侧8X8子数组(如图4中区域A和区域B所示)。将预处理后的LI字节数据按位依次填入数组Matrix[8][Ll]中。为了使得右侧8X8子数组中存在将被移位的行数据和列数据,将2J和Y分别加上偏移量(Ll-8),S卩,数组Matrix[8] [LI]的第(2J+L1-8)列以及第(Y+L1-8)列位于区域B中。设置临时数组T,将数组Matrix[8] [LI]的左侧8X8子数组的第I行的8个数据存储在临时数组T中,将数组Matrix[8] [LI]的第(2J+L1-8)列的8个数据移位至数组Matrix[8] [LI]的左侧8X8子数组的第I行,将数组Matrix[8] [LI]的左侧8X8子数组的第X行的8个数据移位至数组Matrix [8] [LI]的第(2J+L1-8)列,将数组Matrix [8] [LI]的第(Y+L1-8)列的8个数据移位至数组Matrix [8] [LI]的左侧8 X 8子数组的第X行,将存储在临时数组T中的8个数据依次存储在数组Matrix[8] [LI]的第(Y+L1-8)列中。图4示出了 LI = 12 的示例。移位操作要循环L2次,图4示出了 L2 = 8的示例。如果密钥长度L2 > 8,则当
I> 8时,可将I设置为等于当前循环次数取8的模,例如,当前循环次数是第9次循环,则I为9取8的模(等于I)。实施例3下面描述根据本发明实施例3的信息加密方法。图5示出了根据本发明实施例3的加密过程的示意图。设密钥长度为L2字节,信息字节分组长度LI为32字节。本实施例的步骤与实施例I的步骤不同之处在于数据预处理和移位操作,因此仅对数据预处理和移位操作进行描述。数据预处理如果密钥长度L2不等于32,可根据密钥的长度,将密钥拼接或裁减为32字节。然后将信息字节分组的每一个字节与密钥的相应字节相减,相减的结果如果小于0,则溢出后只取最后一个字节。移位操作设置数组Matrix[16] [16],将预处理后的32字节数据按位依次填入数组Matrix [16] [16]中。循环取密钥的每一个字节K [I],设置循环变量X、Y,X为字节K [I]的高4位所对应的十进制数值,Y为字节K[I]的低4位所对应的十进制数值。可以得知,O彡X、Y彡15。将数组Matrix[16] [16]的第I行向左或向右循环旋转X个数据,将数组Matrix [16] [16]的第J列向上或向下循环旋转Y个数据。移位操作要循环L2次,图5示出了 L2 = 16的示例。如果密钥长度L2 > 16,则当I > 16时,可将I设置为等于当前循环次数取16的模,例如,当前循环次数是第17次循环,则I为17取16的模(等于I)。实施例4下面描述根据本发明实施例4的信息加密方法。图6示出了根据本发明实施例4的加密过程的示意图。设信息字节分组长度LI = 32,本实施例的步骤与实施例I的步骤不同之处在于数据预处理和移位操作,因此仅对数据预处理和移位操作进行描述。数据预处理将信息的每一个字节Data[I] (I彡I彡Ll_l)与密钥的相应字节K[I% L2]相加(这里,1% L2表示循环变量I对L2取模),所得结果再与信息的前1_1个字节的累加和Sum(Data, I-1)相加,相加的结果如果大于255,溢出后只取最后一个字节。可以看出,没有对信息的第一个字节Data
进行数据预处理。移位操作设置数组Matrix[8X32],将预处理后的字节数据按位依次填入数组Matrix [8 X 32]。循环取密钥的每一个字节K [I],O ( I ( L2-1,设置循环变量J、X、Y,J为字节K [I]的第2-7位所对应的十进制数值,X为字节K [I]的高4位所对应的十进制数值,Y为字节K[I]的低4位所对应的十进制数值。可以得知,O < J < 63,0 < X、Y < 15。将数组Matrix[8X 32]的第4J个数据开始的X个数据向左或向右循环旋转Y数据。移位操作要循环L2次,图5示出了 L2 = 16的示例。此外,图5示出了一共16次移位操作中的3次移位操作。以上的实施例中提到了不同的数据预处理方式和不同的移位操作,实际上远远不止这几种方式,本领域技术人员可容易地使用另外的数据预处理方式和不同的移位操作,还可对数据预处理方式和移位操作进行不同的组合。本发明对信息的加密仅仅对数据进行移位处理,解密过程相反,其计算效率是非常高的。经实际测试,在同等条件下,本发明的加密方法的加密速度是DES的60倍以上,是AES的10倍以上,加密效率提高了一个数量级。本发明的加密方法的加密强度依赖于密钥的随机性,对于加密过程的每一个循环,密钥的每一个字节都是随机的,则循环变量I、J、X、Y也是随机的,加密过程没有规律。当尝试用暴力方法破解时,可能尝试的某一条密钥对某一个信息分组是正确的,但对下一个信息分组是错误的。对于某一个信息分组,可能会有无数个密钥符合要求,但其中只有一个密钥是正确的。本发明的加密方法不限定密钥长度和信息分组的长度,具有比较大的灵活性,算法的选取完全取决于实施的需要,更增加了破解的难度。当信息量比较大时,可将信息分组长度设的更大一点,运算效率可成倍提高。本发明的加密方法的加密强度取决于密钥的长度,它的加密强度与等长密钥的AES算法的加密强度相当。虽然本发明是参照其示例性的实施例被具体描述和显示的,但是本领域的普通技术人员应该理解,在不脱离由权利要求限定的本发明的精神和范围的情况下,可以对其进行形式和细节的各种改变。
权利要求
1.一种信息加密方法,包括 将需要加密的信息根据与所述信息中的每个字符所对应的ASCII码按位展开为LI个字节,并存储在MXN大小的数组Matrix[M] [N]中,其中,MXN = L1X8,M、N、L1均为整数; 任取随机密钥K,密钥长度为L2个字节,依次使用密钥K中的每一个字节K[I],O≤I≤L2-1,根据字节Κ[Ι]的位数据,对数组Matrix [Μ] [N]进行移位操作; 将移位后的数组Matrix [Μ] [N]按位还原为LI个字节数据,完成加密过程。
2.根据权利要求I所述的信息加密方法,其特征在于在将需要加密的信息的LI个字节存储在数组Matrix [M] [N]中之前,使用密钥K对所述LI个字节进行数据预处理,使得需要加密的信息与原文信息不同。
3.根据权利要求2所述的信息加密方法,其特征在于如果LI= 8,L2 = 8,则M = 8,N = 8,并且所述移位操作包括, 循环取密钥K的每一个字节K [I],O ( I ( 7,设置循环变量I、J、X、Y,I为字节K [I]的序号,J为字节κ[1]的第O、I位所对应的十进制数值,X为字节Κ[Ι]的第2、3、4位所对应的十进制数值,Y为字节Κ[Ι]的5、6、7位所对应的十进制数值; 设置临时数组Τ,将数组Matrix[8] [8]的第I行的8个数据顺序存储在临时数组T中,将数组Matrix [8] [8]的第2J列的8个数据顺序移位至数组Matrix [8] [8]的第I行,将数组Matrix[8] [8]的第X行的8个数据顺序移位至数组Matrix[8] [8]的第2J列,将数组Matrix[8] [8]的第Y列的8个数据顺序移位至数组Matrix[8] [8]的第X行,将存储在临时数组T中的8个数据顺序存储在数组Matrix [8] [8]的第Y列中。
4.根据权利要求3所述的信息加密方法,其特征在于数据预处理包括,将8字节信息的每一个字节与8字节密钥K的相应字节进行异或运算。
5.根据权利要求2所述的信息加密方法,其特征在于如果8≤ LI≤16,则M = 8,N=LI,并且所述移位操作包括, 循环取密钥K的每一个字节K [I],O ≤ I ≤ L2-1,设置循环变量I、J、X、Y,I为字节K[I]的序号,J为字节Κ[Ι]的第0、1位所对应的十进制数值,X为字节Κ[Ι]的第2、3、4位所对应的十进制数值,Y为字节Κ[Ι]的5、6、7位所对应的十进制数值,其中,如果密钥长度L2 > 8,则当I≤8时,将I设置为等于当前循环次数取8的模; 设置临时数组Τ,将数组Matrix[8] [LI]的左侧8X8子数组的第I行的8个数据存储在临时数组T中,将数组Matrix[8] [LI]的第(2J+L1-8)列的8个数据移位至数组Matrix[8][LI]的左侧8X8子数组的第I行,将数组Matrix[8] [LI]的左侧8X8子数组的第X行的8个数据移位至数组Matrix[8] [LI]的第(2J+L1-8)列,将数组Matrix[8] [LI]的第(Y+L1-8)列的8个数据移位至数组Matrix[8] [LI]的左侧8X8子数组的第X行,将存储在临时数组T中的8个数据依次存储在数组Matrix[8] [LI]的第(Y+L1-8)列中。
6.根据权利要求5所述的信息加密方法,其特征在于数据预处理包括,将所述信息的每一个字节与密钥K的相应字节相加,相加的结果如果大于255,则溢出后只取最后一个字节, 其中,如果密钥的长度L2不等于LI,则根据密钥K的长度L2,将密钥K拼接或裁减为LI字节。
7.根据权利要求2所述的信息加密方法,其特征在于如果LI= 32,则M = 16,N =.16,并且所述移位操作包括, 循环取密钥K的每一个字节K [I],O ( I ( L2-1,设置循环变量I、X、Y,I为字节K [I]的序号,X为字节K [I]的高4位所对应的十进制数值,Y为字节K [I]的低4位所对应的十进制数值,其中,如果密钥长度L2> 16,则当I > 16时,将I设置为等于当前循环次数取.16的模; 将数组Matrix[16] [16]的第I行向左或向右循环旋转X个数据,将数组Matrix[16][16]的第J列向上或向下循环旋转Y个数据。
8.根据权利要求7所述的信息加密方法,其特征在于数据预处理包括,所述信息的每一个字节与密钥K的相应字节相减,相减的结果如果小于O,则溢出后只取最后一个字节, 其中,如果密钥的长度L2不等于32,则根据密钥K的长度L2,将密钥K拼接或裁减为.32字节。
9.根据权利要求2所述的信息加密方法,其特征在于如果LI= 32,则设置数组Matrix [8 X 32],将32字节的所述信息按位依次填入数组Matrix [8 X 32], 所述移位操作包括,循环取密钥K的每一个字节K [I],O < I < L2-1,设置循环变量J、X、Y,J为字节K [I]的第2-7位所对应的十进制数值,X为字节K [I]的高4位所对应的十进制数值,Y为字节K [I]的低4位所对应的十进制数值; 将数组Matrix [8 X 32]的第4J个数据开始的X个数据向左循或向右环旋转Y个数据。
10.根据权利要求9所述的信息加密方法,其特征在于数据预处理包括, 将所述信息的每一个字节Data[I]与密钥的相应字节K[I% L2]相加,I彡I ( L1-1,所得结果再与所述信息的前I-I个字节的累加和相加,相加的结果如果大于255,溢出后只取最后一个字节, 其中,1% L2表示循环变量I对L2取模。
全文摘要
一种信息加密方法,该方法包括将需要加密的信息根据与所述信息中的每个字符所对应的ASCII码按位展开为L1个字节,并存储在M×N大小的数组Matrix[M][N]中,其中,M×N=L1×8,M、N、L1均为整数;任取随机密钥K,密钥长度为L2个字节,依次使用密钥K中的每一个字节K[I],0≤I≤L21,根据字节K[I]的位数据,对数组Matrix[M][N]进行移位操作;将移位后的数组Matrix[M][N]按位还原为L1个字节数据,完成加密过程。本发明的加密方法不限定密钥长度和信息分组的长度,具有比较大的灵活性,算法的选取完全取决于实施的需要,更增加了破解的难度。
文档编号H04L9/06GK102904711SQ201110208439
公开日2013年1月30日 申请日期2011年7月25日 优先权日2011年7月25日
发明者王政, 吴恒志, 黄日文 申请人:深圳市金溢科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1