分组密码加密解密的方法及其加密解密器的制作方法

文档序号:7612554阅读:267来源:国知局
专利名称:分组密码加密解密的方法及其加密解密器的制作方法
技术领域
本发明涉及数据传输或存储过程中的加密技术,特别是一种分组密码加密解密的方法及其加密解密器,本发明可以进一步提高分组密码加密的强度。
背景技术
21世纪是信息化的时代,信息日益网络化,体现在商务电子化、金融电子化、政府办公网络化等方面,随之而来的信息的安全与保密就变得越来越重要,而加密技术又是信息安全的基础,加密强度、加密速度都要提高,加密成本要降低。随着计算技术的飞速发展,破密能力也惊人地发展,这就使得加密技术面临严峻的挑战。在20世纪末,一路领先的美国的DES已被攻破,还有一些其它分组密码,比如DES的变形(包括NewDES、多重DES、白化了的DES、s-盒可选择的DES、s-盒可变的DES、使用独立子密钥的DES、广义DES等),Rc系列分组密码(包括RC2、RC5、RC6等)Lucifer、Madryga、Feal-N、RedocII、RedocIII、LOKI系列分组密码(包括LOKI89、LOKI91、LOKI97等),Khufa、Khafre、Safer系列分组密码(包括Safer64、Safer128、Safer+等),MMB、CAST、3WAY、TEA、MacGuffin、SHARK、BEAR、LION、CA.1.1、CRAB、Blowfish、GOST、SQUARE、MISTY、SXAL8、MBAL、Akelarre、15个AES候选算法等;目前国际公开的分组密码不下100种,包括2001年美国出台的AES,在这些算法中并没有引进新的思维、新的概念、新的理论,只能依靠提高分组长度来提高加密强度,且破密能力与加密能力正在同步增长。中国专利z199107959.8公开了一种排列码加密解密方法及其排列码加密解密器。

发明内容
本发明的目的是提供一种分组密码加密解密的方法及其加密解密器,可以克服现有技术的缺点和不足。本发明也是对现有技术的改进,提出了一种新的加密概念模型构成和方法,以求达到在不增加分组长度的情况下提高加密强度,并且与其它加密解密方法相比,可达到相同的加密强度,又可以使加密设备做得更简单。使用排列码加密法时,当分组长度n=4时就可以做到有足够大的加密强度,比n=64的DES的加密强度还大。分组长度小,就可以是加解密设备做得更简单。
本发明对于任意的分组密码,基本构成设明文为m1,m2,m3.........。
对应的密文为c1,c2,c3.........。
Key为密钥。f(m,Key)是分组加密函数,f-1(c,Key)是分组解密函数。
现有的加密方法是c1=f(m1,Key),c2=f(m2,Key),c3=f(m3,Key).........。
现有的解密方法是m1=f-1(c1,Key),m2=f-1(c2,Key),m3=f-1(c3,Key).........。
为了增加密码分析的难度,本发明是使用一个变动的Key,每个、或者每几个分组使用一个不同的Key,这样可以使用Key1,Key2,Key3..........。
具体的方法是输入密钥Key,计算Key1=Key,Key2=F(Key1,m1),Key3=F(Key2,m2),以下文中F是由两个已知变量计算一个新变量的函数,后面不再解释。例如,Key3=F(Key2,m2)可以表示为Key3=Key2+m2,也可以表示为Key3=Key2-m2,还可以表示为Key3=Key2m2(表示是异或运算,一种标准的逻辑运算),只要已知(Key2,m2),计算出Key3的所有方法都可以。
........Keyi=F(Keyi-1,mi-1)...........。
加密方法是c1=f(m1,Key1),c2=f(m2,Key2),c3=f(m3,Key3).........。
对应的解密方法是m1=f-1(c1,Key1),m2=f-1(c2,Key2),m3=f-1(c3,Key3).........;或者这样加密c1=f(m1,Key1),c2=f(m2,Key1),c3=f(m3,Key1).........;ci+1=f(mi+1,Key2),ci+2=f(mi+2,Key2),ci+3=f(mi+3,Key2).........;c2i+1=f(m2i+1,Key3),c2i+2=f(m2i+2,Key3),c2i+3=f(m2i+3,Key3).........;.......。
对应的解密方法是m1=f-1(c1,Key1),m2=f-1(c2,Key1),m3=f-1(c3,Key1).........;mi+1=f-1(ci+1,Key2),mi+2=f-1(ci+2,Key2),mi+3=f-1(ci+3,Key2).........;m2i+1=f-1(c2i+1,Key3),m2i+2=f-1(c2i+2,Key3),m2i+3=f-1(c2i+3,Key3).........;..........;如果加密强度仍不能满足既定的要求,可以把加密后的密文再换一次密钥加密一遍。这个过程可以重复多遍。当然这样会产生很大的延迟,为了少产生延迟,可以每个分组加密多遍,再进行下一个分组的加密和整个明文加密完后再换一个密钥重新加密,这个过程根据需要可以重复多编。
逻辑尺的应用因为加密与解密是对称的,所以还可以用一个0、1序列的密钥控制加密或解密,比明文组短时让密钥循环使用,可以用0代表加密,1代表解密,也可以反过来用1代表加密,0代表解密,只要先加密后解密,或者先解密后加密都行。这个逻辑尺就是输入的密钥,在多遍加密中也可以使用逻辑尺来控制究竟哪一遍加密,哪一遍解密。
假如加密一遍的密钥为k比特,加密j遍,可以输入j*k比特的密钥,依次每次使用k比特,输入的密钥也可以小于j*k比特,最小可以是k比特,在这种情况下,在多次加密时,循环使用密钥序列即可。
本发明的具体实施方案包括下述步骤一、加密的做法是
1)输入密钥Key(包括Key1,Key11,......Key1j),取出明文m1,用分组加密算法f(m1,Key1)产生密文c11和Key2(Key2=F(Key1,m1)),再用分组加密算法f(c11,Key11)产生密文c12和Key21(Key21=F(Key11,c11),......,最后再用分组加密算法f(c1j,Key1j)产生密文c1,至此完成了第一个分组m1的加密;2)取出明文m2,用分组加密算法f(m2,Key2)产生密文c21和Key3(Key3=F(Key2,m2)),再用分组加密算法f(c21,Key21)产生密文c22和Key31(Key31=F(Key21,c21)),......,最后再用分组加密算法f(c2j,Key2j)产生密文c2,至此完成了第二个分组m2的加密;3)取出明文m3,用分组加密算法f(m3,Key3)产生密文c31和Key4(Key4=F(Key3,m3)),再用分组加密算法f(c31,Key31)产生密文c32和Key41(Key41=F(Key31,c31)),......,最后再用分组加密算法f(c3j,Key3j)产生密文c3,至此完成了第三个分组m3的加密;.......,4)一直把所有的明文分组都加密完成。
二、解密的做法是1)输入密钥Key(包括Key1,Key11,......Key1j),取出密文c1,用分组解密算法f-1(c1,Key1j)产生密文c1j和Key2j(Key2j=F(Key1j,c1j)),再用分组解密算法f-1(c1j,Key1j-1)产生密文c1j-1和Key2j-1(Key2j-1=F(Key1j-1,c1j-1)),......最后再用分组加密算法f-1(c11,Key1)产生明文m1,至此完成了第一个分组c1的解密;2)取出密文c2,用分组解密算法f-1(c2,Key2j)产生密文c2j和Key3j(Key3j=F(Key2j,c2j)),再用分组解密算法f-1(c2j,Key2j-1)产生密文c2j-1和Key3j-1(Key3j-1=F(Key2j-1,c2j-1)),......最后再用分组加密算法f-1(c21,Key1)产生明文m2,至此完成了第二个分组c2的解密;3)取出密文c3,用分组解密算法f-1(c3,Key3j)产生密文c3j和Key4j(Key4j=F(Key3j,c3j)),再用分组解密算法f-1(c3j,Key3j-1)产生密文c3j-1和Key4j-1(Key4j-1=F(Key3j-1,c3j-1)),......最后再用分组加密算法f-1(c31,Key1)产生明文m3,至此完成了第三个分组c3的解密;.......
4)一直把所有的密文分组都解密完成。
三、逻辑尺的应用因为加密与解密是对称的,所以还可以用一个0、1序列的密钥控制加密或解密,比明文组短时让密钥循环使用,可以用0代表加密,1代表解密,也可以反过来用1代表加密,0代表解密,只要先加密后解密,或者先解密后加密都行。这个逻辑尺就是输入的密钥,在多遍加密中也可以使用逻辑尺来控制究竟哪一遍加密,哪一遍解密。
假如加密一遍的密钥为k比特,加密j遍,可以输入j*k比特的密钥,依次每次使用k比特,输入的密钥也可以小于j*k比特,最小可以是k比特,在这种情况下,在多次加密时,循环使用密钥序列即可。
本发明提供的分组密码加密解密器包括所述的分组密码加密器包括明文输入线,明文寄存器MR1、MR2、......明文寄存器MRj;密钥Key1、Key2、......密钥Keyj,密钥寄存器R1、R2、......密钥寄存器Rj,时钟CLK,j分频器,时序电路,明文寄存器MR2,延时电路,控制端R1、R2......Rj控制端,子密钥电路,加密运算电路和密钥运算电路构成。
明文输入线接明文寄存器MR1输入端;密钥Key1接密钥寄存器R1输入端、密钥Key2接密钥寄存器R2输入端......密钥Keyj接密钥寄存器Rj输入端;时钟CLK接j分频输入端、同时接时序电路输入端、同时接明文寄存器MR2输入端、同时接延时电路输入端;j分频输出端接明文寄存器MR1输入端;时序电路输出信号Q1接R1控制端和Rj控制端、时序控制信号Q2接R2控制端和R1控制端......;R1、R2......Rj的输出端接子密钥电路的输入端;MR1的输出端接MR2的输入端;MR2的输出端接加密运算电路的输入端和密钥运算电路的输入端;子密钥电路的输出端接加密运算的输入端和密钥运算电路的输入端;加密运算电路的输出端接密文寄存器ER1的输入端;ER1的输出端接MR2的输入端,同时输出密文;密钥运算电路的输出端接R1、R2......Rj的输入端。
所述的分组密码解密器包括密文输入端,密文寄存器ERj、ERj-1、......、密文寄存器ER2、密文寄存器ER1;密钥Keyj、密钥Keyj-1、......密钥Key1,密钥寄存器Rj、Rj-1、......密钥寄存器R1,时钟CLK,j分频器,时序电路,延时电路,控制端Rj、Rj-1、......R1控制端,子密钥电路,加密运算电路和密钥运算电路构成。
密文输入线接密文寄存器ER2输入端;密钥Keyj接密钥寄存器Rj输入端、密钥Keyj-1接密钥寄存器Rj-1输入端......密钥Key1接密钥寄存器R1输入端;时钟CLK接j分频输入端、同时接时序电路输入端、同时接密文寄存器ER3输入端、同时接延时电路输入端;j分频输出端接密文寄存器ER3输入端;时序电路输出信号Q1接Rj控制端和R1控制端、时序控制信号Q2接Rj-1控制端和Rj控制端......;R1、R2......Rj的输出端接子密钥电路的输入端;ER2的输出端接ER3的输入端ER3的输出端接解密运算电路的输入端和密钥运算电路的输入端;子密钥电路的输出端接解密运算电路的输入端和密钥运算电路的输入端;解密运算的输出端接明文寄存器MR3的输入端;MR3的输出端接ER3的输入端,同时输出明文;密钥运算电路的输出端接R1、R2......Rj的输入端。
本发明与现有技术相比有如下有益效果对于美国的DES算法,其分组长度n=64的算法被破密后,只能靠加大分组长度n来提高加密强度。而现在我们提供的方法用于排列码加密法时,当分组长度n=4时就可以做到有足够大的加密强度,比n=64的DES的加密强度还大。分组长度n小的好处是设备的复杂度降低,可靠性增加,加密速度加快。
利用本发明可以设计出加密强度可以大于2n的加密方法。适用于一切可以利用分组密码加密的场合,可以用于存储的数字量加密,又可以用于传输的数字信号加密,由于它的快速性,还可以用于实时系统的加密中。


图1当Key=4时的比特交换示意图;图2加密过程示意图;图3解密过程示意图;图4Key的构成示意图。
图5Key的另一种构成示意图。
图6对一个明文分组进行加密时逻辑尺的应用。
图7对一个密文分组进行解密时逻辑尺的应用。
图8对所有明文分组进行纵向多遍加密过程中逻辑尺的应用。
图9对所有密文分组进行纵向多遍解密过程中逻辑尺的应用。
图10对所有明文分组进行横向多遍加密过程中逻辑尺的应用。
图11对所有密文分组进行横向多遍解密过程中逻辑尺的应用。
图12对明文进行纵向加密过程中以密钥序列与明文作为逻辑尺的应用。
图13加密电路图。
图14解密电路图。
具体实施例方式
本发明可通过实施例详细说明,但它们不是对本发明做任何限制。
实施例1n=4的排列码程序设计说明1.建立1个n=4的排列码表Key01230 01231 01322 02133 02314 03125 0321........
23 3210这样的表有24!个,我们随机建立其中的256个。当Key=4时,有如下的映射关系0→0,1→3,2→1,3→2。附图1描述了Key=4时的比特交换示意图。
为了节省存储空间,0→00,1→01,2→10,3→11,Key用存储地址来表示。这样1个排列码表占24个字节。
图2加密过程示意图;图3解密过程示意图;注加密解密执行的顺序既可以按行进行,又可以按列进行。
2.密钥的设计用1个字节作整数,它表示的范围是0~255。根据其值就可以确定一个排列码表。
在这个排列码表中,再对该值进行模24运算。得到一个0~23的整数,恰好对应排列码表中的Key值,由此可确定比特的交换顺序。
3.关于求非的运算,为了进一步增加破密的难度,我们在交换顺序的同时,在某些路径上求反。因为n=4,0点有可能有4个路径,1、2、3点都有可能有4个路径,所以可能的路径数共有16条,每一bit对应一条路径,使用16bit或者说2个字节控制哪个路径上是否加非。用0表示不加非,用1表示加非,或者反之。
4.综合以上密钥的长度为24bit。附图4和附图5描述了密钥Key的构成。
5.为了进一步增加加密强度,第二个分组的密钥选取,是在原密钥的基础上与3个字节的明文进行一种函数运算,输入都是已知,所以方法可行。(若明文不是3个字节,首先通过任意定义的规则转换成3个字节。)6.这样一来每个分组的密钥都是一个伪随机数。但必定有明文的特征。但产生的密文随机性很强。
7.以上过程连续执行多遍,每遍都用不同的24bit的密钥。
8.为了提高速度,并不是一遍加密结束后再进行下一遍,而是一个分组连续进行多遍加密。
这种做法理论上进行4遍,加密强度已经远远超过了24=16,因为加密强度是关于n的函数,因此加密强度会远远大于2n。
实施例2以密钥序列作为逻辑尺在加密解密过程中的应用加密和解密是两个相逆的过程,可以先加密后解密,也可以先解密后加密。我们可以用长为1比特的二进制0或1作为密钥来控制当前要运行加密模块还是解密模块。即可将输入的密钥序列Key作为逻辑尺,在多遍加密解密过程中来控制哪些遍进行加密、哪些遍进行解密。
现于该实施例中采用如下的符号约定执行一遍加密需k bit密钥,则执行j遍加密解密,可输入j*k bit长的密钥;在每一遍加密解密时依次使用密钥序列Key中的k bit;也可以输入长度小于j*k bit长的密钥,在这种情况下,循环使用该密钥作为逻辑尺即可进行j遍的加密过程。
在附图6中,描述了在对一个明文分组进行加密时逻辑尺的应用;在该过程中,可把1代表加密而0代表解密。以p作为循环变量,其初值为1、终值为j;在每轮循环中,首先判断是否满足循环条件p<=j,若不满足,则进行下一个分组的运算;若满足p<=j,则读取密钥序列Key中的第p个比特Kp,再对Kp进行判定,若Kp=1,则第p遍应该执行加密模块,反之若Kp=0,则第p遍应该执行解密模块。
至此,完成了对于该明文分组的加密过程。
对所有明文分组均利用上述方法,完成对所有明文分组的加密,也就完成了对于整个明文的加密。
注若密钥序列Key的长度<j,则循环使用密钥序列Key即可,直至利用密钥序列Key完成对于明文的加密。
附图8描述了对于所有明文分组进行纵向多遍加密过程中逻辑尺的应用。
附图8中的符号约定如下明文分组为m1,m2,...mL;即明文分组个数为L;q为外层循环变量,其初值为1、终值为L;p为内层循环变量,其初值为1、终值为j;K仍为密钥序列,K中的第p个比特仍以Kp表示。
外层循环的判定条件为q<=L是否满足如果不满足q<=L,则已经完成对所有明文分组的运算,所有明文分组的加密过程全部完成,即完成了对于整个明文的加密过程;若满足q<=L,则进入内层循环,开始对于下一个分组的j遍加密过程。内层循环的原理同附图6,在此不再赘述。
附图7描述了对于一个密文分组进行解密时的逻辑尺的应用。在对该分组进行解密时,以1代表解密而0代表加密。仍以p作为循环变量,其初值为1、终值为j;在每轮循环过程中,首先判断是否满足循环条件p<=j若不满足,则进行下一个分组的运算;若满足p<=j,则读取密钥序列Key中的第p个比特Kp,再对Kp进行判定若Kp=1,则第p遍应该执行解密模块,反之若Kp=0,则第p遍应该执行加密模块。
至此,完成了对于该密文分组的解密过程。
对所有密文分组均利用上述方法,完成对所有密文分组的解密,也就完成了对于整个密文的解密。
附图9描述了对于所有密文分组进行纵向多遍解密过程中逻辑尺的应用。
附图9中的符号约定如下密文分组为c1,c2,...cL;即密文分组个数为L;q为外层循环变量,其初值为1、终值为L;p为内层循环变量,其初值为1、终值为j;K仍为密钥序列,K中的第p个比特仍以Kp表示。
外层循环的判定条件为q<=L是否满足如果不满足q<=L,则已经完成对所有密文分组的运算,所有密文分组的解密过程全部完成,即完成了对于整个密文的解密过程;若满足q<=L,则进入内层循环,开始对于下一个密文分组的运算。内层循环的原理同附图7,在此不再赘述。
在此需补充一点在附图6中,对于同一分组沿纵向执行了多遍的加密或解密模块,从而完成了对该分组的加密过程;然后对其他分组执行上述过程,从而完成对整个明文的加密过程;附图8中描述了对于所有明文分组进行纵向多遍加密过程中逻辑尺的应用;在附图7中,对于同一分组沿纵向执行多遍加密或解密模块,从而完成了对该分组的解密过程;然后对其他分组执行上述过程,从而完成对整个密文的解密过程。附图9中描述了对于所有密文分组进行纵向多遍解密过程中逻辑尺的应用;上述过程都是沿纵向完成的,另一种实施方案是沿横向完成参见附图2,可以先计算出c11,c21,c31......后,再去计算c12,c22,c32......,直至计算出所有的密文分组c1,c2,c3......为止,则横向完成了对于整个明文的加密。
同理,在附图3中,解密过程不仅可沿纵向进行,也可以沿横向进行。
附图10中描述了对于所有明文分组实现横向多遍加密过程中逻辑尺的应用。
附图10中的符号约定如下明文分组为m1,m2,...mL;即明文分组个数为L;q为外层循环变量,其初值为1、终值为j;p为内层循环变量,其初值为1、终值为L;K仍为密钥序列,K中的第p个比特仍以Kp表示。
外层循环判定条件为是否满足q<=j;若不满足q<=j,则表明已横向完成对所有明文明文分组的j遍运算,则对明文的横向多遍加密过程完成;若满足q<=j,则进入内层循环,沿横向执行对于所有分组的下一遍加密模块或解密模块。
附图11中描述了对于所有密文分组实现横向多遍解密过程中逻辑尺的应用。
附图11中的符号约定如下密文分组为c1,c2,...cL;即明文分组个数为L;q为外层循环变量,其初值为1、终值为j;p为内层循环变量,其初值为1、终值为L;K仍为密钥序列,在此作为逻辑尺使用;K中的第p个比特仍以Kp表示。
外层循环判定条件为是否满足q<=j;若不满足q<=j,则表明已横向完成对所有密文分组的j遍运算,则对密文的横向多遍解密过程完成;若满足q<=j,则进入内层循环,沿横向执行对于所有分组的下一遍加密模块或解密模块。
注在该实施例的上述所有附图内,在对明文的加密过程中,均以1代表执行加密模块而以0代表解密模块,而对于密文的解密过程中,均以0代表加密模块而以1代表解密模块;也可以在对明文的加密过程中以0代表加密模块而以1代表解密模块,在对密文的解密过程中以1代表加密模块而以0代表解密模块。只要加密过程中所采用的逻辑与解密过程中的逻辑相反即可。
实施例3以密钥序列和明文分组作为逻辑尺在加密解密过程中的应用在实施例2各例中,均以密钥序列Key作为逻辑尺,来控制哪一遍执行加密模块、哪一遍执行解密模块;在该实施例中,以密钥序列和明文分组作为逻辑尺。
图12描述了对明文进行纵向加密过程中以密钥序列与明文作为逻辑尺的应用。在该图中,对各明文分组m1,m2,...mL进行纵向加密;首先使用密钥序列Key作为逻辑尺,当密钥序列Key作为逻辑尺用完时,使用明文分组m1的各个比特作为逻辑尺继续使用,来控制在哪一遍执行加密、哪一遍执行解密。若明文分组m1仍然不够,则当m1用完后,开始使用明文分组m2的各个比特作为逻辑尺继续使用,来控制在哪一遍执行加密、哪一遍执行解密。。。。。。直到整个加密过程完成。
实施例4以n=4为例描述硬件加密和解密过程,取j=3,即子密钥为3组,每一分组加(解)密3次。
加密过程如下输入明文(01000000)B,输入(100101010010101010101010)B到Key1,(101000110101001010110110)B到Key2,输入密钥(110101110011001010101000)B到Key3。
CLK到来,3分频输出高电平,第一组明文(0100)B由寄存器MR1输入MR2;时序电路输出Q1为高电平,其余为低电平,密钥寄存器R1打开,其余密钥寄存器关闭,Key1输入到子密钥电路,子密钥电路对Key1前8位对(24)D取模得到(5)D;子密钥电路处理子密钥后输入到加密运算和密钥运算;CLK到来,明文输入到加密运算和密钥运算;第一组明文经第一次加密为(0011)B,输入到MR2;密钥运算输出(100101010010101010101110)B输入到R1为Key1’;CLK到来,时序电路输出Q2为高电平,其余为低电平,R2打开,其余密钥寄存器关闭,Key2输入到子密钥电路,子密钥电路对Key2前8位对(24)D取模得到(19)D;子密钥电路处理子密钥后输入到加密运算和密钥运算;CLK到来,第一次中间秘文输入到加密运算和密钥运算;第一次中间秘文经第二次加密为(1000)B,输入到MR2;密钥运算输出(101000110101001010111001)B输入到R2为Key2’;CLK到来,时序电路输出Q3为高电平,其余为低电平,R3打开,其余密钥寄存器关闭,Key3输入到子密钥电路,子密钥电路对Key3前8位对(24)D取模得到(23)D;子密钥电路处理子密钥后输入到加密运算和密钥运算;CLK到来,第二次中间秘文输入到加密运算和密钥运算;第二次中间秘文经第三次加密为(1100)B,输入到MR2;密钥运算输出(110101110011001010100000)B输入到R3为Key3’;输出第一组密文(1100)B。
CLK到来,3分频输出高电平,第二组明文(0000)B由寄存器MR1输入MR2;时序电路输出Q1为高电平,其余为低电平,密钥寄存器R1打开,其余密钥寄存器关闭,Key1’输入到子密钥电路,子密钥电路对Key1’前8位对(24)D取模得到(5)D;子密钥电路处理子密钥后输入到加密运算和密钥运算;CLK到来,明文输入到加密运算和密钥运算;第二组明文经第一次加密为(0011)B,输入到MR2;密钥运算输出(100101010010101010101110)B输入到R1为Key1”;CLK到来,时序电路输出Q2为高电平,其余为低电平,R2打开,其余密钥寄存器关闭,Key2’输入到子密钥电路,子密钥电路对Key2’前8位对(24)D取模得到(19)D;子密钥电路处理子密钥后输入到加密运算和密钥运算;CLK到来,第一次中间秘文输入到加密运算和密钥运算;第一次中间秘文经第二次加密为(1101)B,输入到MR2;密钥运算输出(101000110101001010111100)B输入到R2为Key2’;CLK到来,时序电路输出Q3为高电平,其余为低电平,R3打开,其余密钥寄存器关闭,Key3输入到子密钥电路,子密钥电路对Key3前8位对(24)D取模得到(23)D;子密钥电路处理子密钥后输入到加密运算和密钥运算;CLK到来,第二次中间秘文输入到加密运算和密钥运算;第二次中间秘文经第三次加密为(0101)B,输入到MR2;密钥运算输出(110101110011001010101101)B输入到R3为Key3’;输出第二组密文(0101)B。
解密过程如下输入密文(11000101)B,输入(100101010010101010101010)B到Key1,(101000110101001010110110)B到Key2,输入密钥(110101110011001010101000)B到Key3。
CLK到来,3分频输出高电平,第一组密文(1100)B由寄存器ER2输入ER3;时序电路输出Q1为高电平,其余为低电平,密钥寄存器R3打开,其余密钥寄存器关闭,Key3输入到子密钥电路,子密钥电路对Key3前8位对(24)D取模得到(23)D;子密钥电路处理子密钥后输入到解密运算和密钥运算;CLK到来,密文输入到解密运算和密钥运算;第一组密文经第一次解密为(1000)B,输入到MR3;密钥运算输出(110101110011001010110000)B输入到R3为Key3’;CLK到来,时序电路输出Q2为高电平,其余为低电平,R2打开,其余密钥寄存器关闭,Key2输入到子密钥电路,子密钥电路对Key2前8位对(24)D取模得到(19)D;子密钥电路处理子密钥后输入到解密运算和密钥运算;CLK到来,第一次中间明文输入到解密运算和密钥运算;第一次中间明文经第二次解密为(0011)B,输入到ER3;密钥运算输出(101000110101001010111001)B输入到R2为Key2’;CLK到来,时序电路输出Q3为高电平,其余为低电平,R1打开,其余密钥寄存器关闭,Key1输入到子密钥电路,子密钥电路对Key1前8位对(24)D取模得到(5)D;子密钥电路处理子密钥后输入到解密运算和密钥运算;CLK到来,第二次中间明文输入到解密运算和密钥运算;第二次中间明文经第三次解密为(0100)B,输入到MR3;密钥运算输出(100101010010101010101110)B输入到R1为Key1’;输出第一组明文(0100)B。
CLK到来,3分频输出高电平,第二组密文(0101)B由寄存器ER2输入ER3;时序电路输出Q1为高电平,其余为低电平,密钥寄存器R3打开,其余密钥寄存器关闭,Key3’输入到子密钥电路,子密钥电路对Key3’前8位对(24)D取模得到(23)D;子密钥电路处理子密钥后输入到解密运算和密钥运算;CLK到来,密文输入到解密运算和密钥运算;第二组密文经第一次解密为(1101)B,输入到ER3;密钥运算输出(110101110011001010111101)B输入到R3为Key3”;CLK到来,时序电路输出Q2为高电平,其余为低电平,R2打开,其余密钥寄存器关闭,Key2’输入到子密钥电路,子密钥电路对Key2’前8位对(24)D取模得到(19)D;子密钥电路处理子密钥后输入到解密运算和密钥运算;CLK到来,第一次中间明文输入到解密运算和密钥运算;第一次中间明文经第二次解密为(0011)B,输入到ER3;密钥运算输出(101000110101001010111100)B输入到R2为Key2”;CLK到来,时序电路输出Q3为高电平,其余为低电平,R1打开,其余密钥寄存器关闭,Key1’输入到子密钥电路,子密钥电路对Key1’前8位对(24)D取模得到(5)D;子密钥电路处理子密钥后输入到解密运算和密钥运算;CLK到来,第二次中间明文输入到解密运算和密钥运算;第二次中间明文经第三次解密为(0000)B,输入到ER3;密钥运算输出(100101010010101010101110)B输入到则为Key1”;输出第二组明文(0000)B。
权利要求
1.一种分组密码加密解密的方法,它包括下述步骤设明文为m1,m2,m3.........;对应的密文为c1,c2,c3.........;Key为密钥;f(m,Key)是分组加密函数,f-1(c,Key)是分组解密函数;加密方法是c1=f(m1,Key),c2=f(m2,Key),c3=f(m3,Key).........;解密方法是m1=f-1(c1,Key),m2=f-1(c2,Key),m3=f-1(c3,Key).........;其特征在于使用一个变动的Key,每个、或者每几个分组使用一个不同的KeyKey1,Key2,Key3..........;输入密钥Key,计算Key1=Key,Key2=F(Key1,m1),Key3=F(Key2,m2)........Keyi=F(Keyi-1,mi-1)...........;F是由两个已知变量计算一个新变量的函数;加密方法是c1=f(m1,Key1),c2=f(m2,Key2),c3=f(m3,Key3).........;或者c1=f(m1,Key1),c2=f(m2,Key1),c3=f(m3,Key1).........;ci+1=f(mi+1,Key2),ci+2=f(mi+2,Key2),ci+3=f(mi+3,Key2).........;c21+1=f(m2i+1,Key3),c2i+2=f(m2i+2,Key3),c2i+3=f(m2i+3,Key3).........;对应的解密方法是m1=f-1(c1,Key1),m2=f-1(c2,Key2),m3=f-1(c3,Key3).........;或者解密方法是m1=f-1(c1,Key1),m2=f-1(c2,Key1),m3=f-1(c3,Key1).........;mi+1=f-1(ci+1,Key2),mi+2=f-1(ci+2,Key2),mi+3=f-1(ci+3,Key2).........;m2i+1=f-1(c2i+1,Key3),m2i+2=f-1(c2i+2,Key3),m2i+3=f-1(c2i+3,Key3).........;..........。
2.按照权利要求1所说的分组密码加密解密的方法,其特征在于把所说的加密后的密文再换一次密钥加密一遍或分组重复多遍;所说的换密钥加密重复多遍中,包括先是每个分组加密多遍,然后再进行下一个分组的加密和整个明文加密完后再换一个密钥重新加密,这个过程根据需要可以重复多编。
3.按照权利要求1或2所说的分组密码加密解密的方法,其特征在于应用逻辑尺控制加密或解密。
4.按照权利要求3所说的分组密码加密解密的方法,其特征在于所说的逻辑尺是0、1序列,用0代表加密,1代表解密,或用1代表加密,0代表解密。
5.一种分组密码加密解密的方法,其特征在于它包括下述步骤加密的做法1)输入密钥Key,包括Key1,Key11,......Key1j,取出明文m1,用分组加密算法f(m1,Key1)产生密文c11和Key2,Key2=F(Key1,m1)再用分组加密算法f(c11,Key11)产生密文c12和Key21,Key21=F(Key11,c11),......最后再用分组加密算法f(c1j,Key1j)产生密文c1,至此完成了第一个分组m1的加密;2)取出明文m2,用分组加密算法f(m2,Key2)产生密文c21和Key3,Key3=F(Key2,m2),再用分组加密算法f(c21,Key21)产生密文c22和Key31,Key31=F(Key21,c21),......最后再用分组加密算法f(c2j,Key2j)产生密文c2,至此完成了第二个分组m2的加密;3)取出明文m3,用分组加密算法f(m3,Key3)产生密文c31和Key4,Key4=F(Key3,m3),再用分组加密算法f(c31,Key31)产生密文c32和Key4,Key41=F(Key31,c31),......最后再用分组加密算法f(c3j,Key3j)产生密文c3,至此完成了第三个分组m3的加密;.......;4)一直把所有的明文分组都加密完成;解密的做法1)输入密钥Key,包括Key1,Key11,......Key1j,取出密文c1,用分组解密算法f-1(c1,Key1j)产生密文c1j和Key2j,Key2j=F(Key1j,c1j),再用分组解密算法f-1(c1j,Key1j-1)产生密文c1j-1和Key2j-1,Key2j-1=F(Key1j-1,c1j-1),......,最后再用分组加密算法f-1(c11,Key1)产生明文m1,至此完成了第一个分组c1的解密;2)取出密文c2,用分组解密算法f-1(c2,Key2j)产生密文c2j和Key3j,Key3j=F(Key2j,c2j),再用分组解密算法f-1(c2j,Key2j-1)产生密文c2j-1和Key3j-1,Key3j-1=F(Key2j-1,c2j-1),......,最后再用分组加密算法f-1(c21,Key1)产生明文m2,至此完成了第二个分组c2的解密;3)取出密文c3,用分组解密算法f-1(c3,Key3j)产生密文c3j和Key4j,Key4j=F(Key3j,c3j),再用分组解密算法f-1(c3j,Key3j-1)产生密文c3j-1和Key4j-1,Key4j-1=F(Key3j-1,c3j-1),......,最后再用分组加密算法f-1(c31,Key1)产生明文m3,至此完成了第三个分组c3的解密;.......;4)一直把所有的密文分组都解密完成。
6.按照权利要求5所说的分组密码加密解密的方法,其特征在于把所说的加密后的密文再换一次密钥加密一遍或分组重复多遍;所说的换密钥加密重复多遍中,包括先是每个分组加密多遍,然后再进行下一个分组的加密和整个明文加密完后再换一个密钥重新加密,这个过程根据需要可以重复多编。
7.按照权利要求5所说的分组密码加密解密的方法,其特征在于应用逻辑尺控制加密或解密。
8.按照权利要求7所说的分组密码加密解密的方法,其特征在于所说的逻辑尺是0、1序列,用0代表加密,1代表解密;或用1代表加密,0代表解密。
9.一种分组密码加密解密器,其特征在于所述的分组密码加密器包括明文输入线,明文寄存器MR1、MR2、......明文寄存器MRj;密钥Key1、Key2、......密钥Keyj,密钥寄存器R1、R2、......密钥寄存器Rj,时钟CLK,j分频器,时序电路,明文寄存器MR2,延时电路,控制端R1、R2......Rj控制端,子密钥电路,加密运算电路和密钥运算电路构成;明文输入线接明文寄存器MR1输入端;密钥Key1接密钥寄存器R1输入端、密钥Key2接密钥寄存器R2输入端......密钥Keyj接密钥寄存器Rj输入端;时钟CLK接j分频输入端、同时接时序电路输入端、同时接明文寄存器MR2输入端、同时接延时电路输入端;j分频输出端接明文寄存器MR1输入端;时序电路输出信号Q1接R1控制端和Rj控制端、时序控制信号Q2接R2控制端和R1控制端......;R1、R2......Rj的输出端接子密钥电路的输入端;MR1的输出端接MR2的输入端;MR2的输出端接加密运算电路的输入端和密钥运算电路的输入端;子密钥电路的输出端接加密运算的输入端和密钥运算电路的输入端;加密运算电路的输出端接密文寄存器ER1的输入端;ER1的输出端接MR2的输入端,同时输出密文;密钥运算电路的输出端接R1、R2......Rj的输入端。所述的分组密码解密器包括密文输入端,密文寄存器ERj、ERj-1、......、密文寄存器ER2、密文寄存器ER1;密钥Keyj、密钥Keyj-1、......密钥Key1,密钥寄存器Rj、Rj-1、......密钥寄存器R1,时钟CLK,j分频器,时序电路,延时电路,控制端Rj、Rj-1、......R1控制端,子密钥电路,加密运算电路和密钥运算电路构成;密文输入线接密文寄存器ER2输入端;密钥Keyj接密钥寄存器Rj输入端、密钥Keyj-1接密钥寄存器Rj-1输入端......密钥Key1接密钥寄存器R1输入端;时钟CLK接j分频输入端、同时接时序电路输入端、同时接密文寄存器ER3输入端、同时接延时电路输入端;j分频输出端接密文寄存器ER3输入端;时序电路输出信号Q1接Rj控制端和R1控制端、时序控制信号Q2接Rj-1控制端和Rj控制端......;R1、R2......Rj的输出端接子密钥电路的输入端;ER2的输出端接ER3的输入端;ER3的输出端接解密运算电路的输入端和密钥运算电路的输入端;子密钥电路的输出端接解密运算电路的输入端和密钥运算电路的输入端;解密运算的输出端接明文寄存器MR3的输入端;MR3的输出端接ER3的输入端,同时输出明文;密钥运算电路的输出端接R1、R2......Rj的输入端。
全文摘要
本发明涉及一种分组密码加密解密的方法及其加密解密器。使用一个变动的Key,每个、或者每几个分组使用一个不同的Key,这样可以使用Key
文档编号H04L9/06GK1697369SQ20051001380
公开日2005年11月16日 申请日期2005年6月14日 优先权日2005年6月14日
发明者武优西, 武金木, 洪流涛, 姚芳, 李艳, 刘依, 张邑博 申请人:河北工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1