专利名称:一种实现sms4密码算法中加解密处理的方法
技术领域:
本发明主要应用于信息技术领域,具体涉及一种实现SMS4密码算法中加解密处理的方法。
背景技术:
实现SMS4加密算法的关键部件是密钥扩展部件和加解密部件。加解密部件主要由三部分构成,即数据寄存部件、常数阵列存储部件、数据转换部件。密钥扩展部件与加解密部件的内部结构及处理过程基本相同。
数据寄存部件主要由通用触发器构成,用于数据的寄存。在一个时钟周期内,该部件所寄存的数据是不改变的。通用触发器是在时钟上沿或下沿把数据输入端的数据输至触发器输出端,而在其他时刻触发器输出端的数据不发生变化的数据暂存器件。
常数阵列存储部件是存储常数阵列的存储部件。现有技术中的常数阵列一般是加解密处理之前已经准备好的宽度为32比特、深度为32的数据阵列。常数阵列存储部件的数据按照地址的高低顺序排列,可命名为rk0,rk1,…rk31。
数据转换部件是按照密码算法要求进行数据处理的部件。例如,按照国家的SMS4密码算法要求进行数据处理,数据转换部件完成的操作中只有一次密码算法所规定的合成置换。
目前,按照SMS4密码算法要求进行加解密数据处理的方法如下1)将外部数据输入数据寄存部件。外部数据输入到数据寄存部件后,数据寄存部件的输出端输出数据。例如,128bit的外部数据,分为4个32bit的数据,可分别命名为A0、A1、A2、A3。经数据寄存部件后输出端的数据仍为128bit,分为4个32bit的数据,分别相应地命名为a0、a1、a2、a3。
2)进行数据转换处理。将数据寄存部件的输出端数据输入数据转换部件进行数据转换处理。数据寄存部件的输出端数据a0、a1、a2、a3经数据转换部件转换为128bit的数据C0、C1、C2、C3。
3)进行再次数据转换处理。将前次数据转换处理后的数据再次存至数据寄存部件,然后将数据寄存部件输出端的数据再次输入数据转换部件,进行再次数据转换。
4)重复再次数据转换处理,得到最终的数据处理结果。对128bit的外部数据,再次数据转换处理须循环处理30次。即数据转换处理共要进行32次,才能得到最终的数据处理结果。
上述按照SMS4密码算法要求进行加解密数据处理的方法存在如下缺点1.数据转换处理的循环次数多。例如,加密128bit数据,至少需运行32个数据转换处理周期才能得到最终数据处理结果。
2.加密效率低。加密效率即单位时间内加密的数据数量。加密128bit数据需数据转换处理32次,由于目前实际应用中的时钟频率一般都较低,使得单位时间内加密的数据数量少,效率低。如果指定加密效率,则需提高时钟频率,而实际应用中的时钟频率往往无法提高,所以实际加密效率仍较低。
3.采用现有技术的方法,为了得到较高的加密效率就必须提高时钟频率,实现该方法的集成电路会导致(1)芯片的信号完整性不好。
(2)芯片设计困难,产品实施困难。
(3)芯片设计成本高。
4.采用现有技术方法设计的集成电路,应用于系统中,时钟频率的提高会导致(1)印制电路板(PCB)成本增加。
(2)印制电路板(PCB)设计困难,产品实施困难。
(3)系统中的干扰很大,会影响其他设备、器件的正常、高效工作。
发明内容
本发明的目的在于提供一种实现SMS4密码算法中加解密处理的方法,其解决了背景技术中数据转换处理的循环次数多,加密效率低的技术问题。
本发明的技术解决方案是一种实现SMS4密码算法中加解密处理的方法,其特殊之处在于该方法包括循环加解密数据处理,所述循环加解密数据处理的实现步骤包括1)准备常数阵列根据数据转换处理部件的个数安排常数阵列数据的宽度和深度,相同深度的数据构成一行;2)将外部数据输入数据寄存部件在时钟上沿或下沿,把数据寄存部件输入端的数据传送至该数据寄存部件的输出端;3)进行首次数据转换处理
(1)在该时钟周期内,将常数阵列存储部件所存储常数阵列的第一行对应的数据分别输至所有的数据转换部件;(2)在同一个时钟周期内,数据寄存部件输出端的数据输入第一个数据转换部件进行数据转换处理;第一个数据转换部件输出的数据再输入到下一个数据转换部件进行数据转换处理;依此方式,直至所有的数据转换部件顺序完成数据转换处理;4)进行再次数据转换处理(1)在下一个时钟沿到来的时刻,将前次数据转换处理的数据存至数据寄存部件;(2)在该时钟周期内,将常数阵列存储部件所存储常数阵列的下一行对应的数据分别输至所有的数据转换部件;(3)在同一个时钟周期内,数据寄存部件输出端的数据输入第一个数据转换部件进行数据转换处理;第一个数据转换部件输出的数据再输入到下一个数据转换部件进行数据转换处理;依此方式,直至所有的数据转换部件顺序完成数据转换处理;5)重复再次数据转换处理重复再次数据转换处理过程,直至完成所有规定的数据转换处理过程,得到循环加解密数据处理结果。
上述准备常数阵列满足的条件包括(1)将密钥扩展处理所得到的常数阵列数据按照地址高低顺序排列,存入常数阵列存储部件;(2)根据数据转换处理中数据转换处理部件的个数安排对应宽度和深度,且宽度与深度的乘积为1024;(3)常数阵列中相同深度的数据构成一行。
上述循环加解密数据处理之前可加有附加加解密数据处理,所述附加加解密数据处理的实现步骤包括1)准备常数阵列根据附加加解密数据处理中数据转换处理部件的个数安排常数阵列数据的宽度,常数阵列数据的深度为1;相同深度的数据构成一行;2)将外部数据输入数据寄存部件(1)将外部数据输至数据寄存部件的输入端;(2)在时钟上沿或下沿,把数据寄存部件输入端的数据传送至该数据寄存部件的输出端;
3)进行附加数据转换处理(1)在该时钟周期内,将常数阵列存储部件所存储常数阵列对应的数据分别输至附加加解密处理中的所有数据转换部件;(2)在同一个时钟周期内,数据寄存部件输出端的数据输入到第一个数据转换部件进行数据转换处理;第一个数据转换部件输出的数据再输入到下一个数据转换部件进行数据转换处理;依此方式,直至附加加解密数据处理中的所有数据转换部件顺序完成数据转换处理,得到附加加解密数据处理结果;4)以附加加解密数据处理结果作为循环加解密数据处理中的外部数据。
上述循环加解密数据处理之后可加有附加加解密数据处理,所述附加加解密数据处理的实现步骤包括1)准备常数阵列根据附加加解密数据处理中数据转换处理部件的个数安排常数阵列数据的宽度,常数阵列数据的深度为1;相同深度的数据构成一行;2)将循环加解密数据处理得到的数据输入数据寄存部件(1)将循环加解密数据处理得到的数据输至数据寄存部件的输入端;(2)在时钟上沿或下沿,把数据寄存部件输入端的数据传送至该数据寄存部件的输出端;3)进行附加数据转换处理(1)在该时钟周期内,将常数阵列存储部件所存储常数阵列对应的数据分别输至附加加解密数据处理中的所有数据转换部件;(2)在同一个时钟周期内,数据寄存部件输出端的数据输入到第一个数据转换部件进行数据转换处理;第一个数据转换部件输出的数据再输入到下一个数据转换部件进行数据转换处理;依此方式,直至附加加解密数据处理中的所有数据转换部件顺序完成数据转换处理,得到附加加解密数据处理结果;4)附加加解密数据处理结果即为最终加解密数据处理结果。
上述准备常数阵列满足的条件包括1)将密钥扩展处理所得到的常数阵列数据按照地址高低顺序排列,存入常数阵列存储部件;2)根据数据转换处理中数据转换处理部件的个数安排对应宽度和深度(1)确定循环加解密数据处理中常数阵列的宽度和深度根据循环加解密数据处理中数据转换处理部件的个数安排对应宽度和深度,得到循环加解密数据处理中常数阵列数据宽度与深度的乘积;(2)确定附加加解密数据处理中常数阵列数据的宽度和深度根据附加加解密数据处理中常数阵列数据的宽度为附加加解密数据处理中数据转换处理部件的个数乘以32,附加加解密数据处理中常数阵列数据的的深度为1;确定附加加解密数据处理中常数阵列数据宽度与深度的乘积为附加加解密数据处理中数据转换处理部件的个数×32×1;(3)循环加解密数据处理中常数阵列数据宽度与深度的乘积与附加加解密数据处理中常数阵列数据宽度与深度的乘积,两者之和为1024;3)常数阵列中相同深度的数据构成一行。
上述外部数据输入数据寄存部件可包括下列步骤(1)将外部数据输至数据寄存部件的输入端;(2)在时钟上沿或下沿,把数据寄存部件输入端的数据传送至该数据寄存部件的输出端。
上述附加数据转换处理中的数据转换处理部件可采用一个、二个或多个。
本发明具有以下优点1.数据转换处理的循环次数少。例如,加密128bit的数据,若采用4个数据转换部件,只需循环运行8个周期就能输出最终数据处理结果。
2.加密效率高。由于单位时间内加密的数据数量大大增加,所以加密效率高。例如,若采用4个数据转换部件,只需循环运行8个周期就能加密128bit数据,所以,在时钟频率相同的的情况下,可以使加密效率提高4倍。
3.采用本发明设计集成电路,在满足所要求加密效率的情况下,由于时钟频率仅为原来的1/n,故时钟频率只需原来的1/n。例如,加密128bit的数据,若采用4个数据转换部件,时钟频率只需原来的1/4。所以,在相同处理效率的情况下,实现该方法的芯片具有下述特点(1)可使芯片信号的完整性大大优化;(2)芯片的设计、产品易于实现;(3)芯片的设计成本降低。
4.采用本发明设计集成电路,在满足所要求加密效率的情况下,由于时钟频率仅为原来的1/n,故时钟频率只需原来的1/n。在相同处理效率的情况下具有下述特点
(1)印制电路板(PCB)成本降低;(2)印制电路板(PCB)设计、产品易于实现;(3)系统中的干扰降低,对其他设备、器件正常、高效工作的影响大幅度降低。
图1为本发明的原理框图;图2为本发明循环加解密数据处理的流程示意图;图3为本发明在循环加解密数据处理之前加有附加加解密数据处理的流程示意图;图4为本发明在循环加解密数据处理之后加有附加加解密数据处理的流程示意图;图5为本发明循环加解密数据处理之前、之后均加有附加加解密数据处理的流程示意图。
附图标号说明1-数据寄存部件,2-数据转换部件,3-常数阵列存储部件,4-循环加解密数据处理;21-数据转换部件,22-数据转换部件;101-数据寄存部件,102-数据寄存部件;200-数据转换部件,201-数据转换部件,202-数据转换部件,203-数据转换部件;210-转据转换部件,211-数据转换部件;220-数据转换部件,221-数据转换部件;301-常数阵列存储部件,302-常数阵列存储部件;501-附加加解密数据处理,502-附加加解密数据处理。
具体实施例方式
本发明主要通过数据寄存部件、常数阵列存储部件及数据转换部件实现。
本发明的数据寄存部件用于寄存外部数据及上一次数据转换处理的结果。数据寄存部件一般可采用通用触发器,如D触发器、JK触发器等。该类通用触发器是在时钟上沿或下沿把数据输入端的数据传至触发器的输出端,在其他时刻触发器输出端的数据不发生变化的数据暂存器件。即在同一个数据转换处理周期内,数据寄存部件所寄存的数据是不改变的。
数据转换部件是按照密码算法要求进行数据处理的部件。例如,按照国家的SMS4密码算法要求进行数据处理,数据转换部件完成的操作中只有一次密码算法所规定的合成置换。
常数阵列存储部件用于存储常数阵列数据。本发明采用的常数阵列是密钥扩展处理所得到的结果数据,按照地址高低顺序排列,按照循环体中数据转换部件的个数安排常数阵列对应的宽度和深度,并且宽度与深度的乘积为1024。例如,采用4个数据转换部件,那么常数阵列的宽度是128bit,深度是8;若采用8个数据转换部件,常数阵列的宽度则是256bit,深度是4。
本发明数据转换部件的个数是32的约数时,宜于采用循环加解密数据处理的方法实现。参见图1、2,本发明循环加解密数据处理实现步骤如下1)准备常数阵列。
(1)将密钥扩展处理所得到的常数阵列数据按照地址高低顺序排列,存入常数阵列存储部件3;(2)根据数据转换处理中数据转换处理部件2的个数安排对应宽度和深度,并且宽度与深度的乘积为1024;(3)常数阵列中相同深度的数据构成一行。
2)将外部数据输入数据寄存部件1。
(1)将外部数据输至数据寄存部件1的输入端;(2)在时钟上沿或下沿,把数据寄存部件1输入端的数据传送至其输出端。
3)进行首次数据转换处理。
(1)在该时钟周期内,将常数阵列存储部件3所存储常数阵列的第一行对应的数据分别输至数据转换部件2中所有的数据转换部件200-203;(2)在同一个时钟周期内,数据寄存部件1输出端的数据输入第一个数据转换部件200进行数据转换处理;第一个数据转换部件200输出的数据再输入到下一个数据转换部件201进行数据转换处理;依此方式,直至数据转换部件2中所有的数据转换部件200-203顺序完成数据转换处理。
4)进行再次数据转换处理。
(1)在下一个时钟沿到来的时刻,将前次数据转换处理的数据存至数据寄存部件1;(2)在该时钟周期内,将常数阵列存储部件3所存储常数阵列的下一行对应的数据分别输至数据转换部件2中所有的数据转换部件200-203;(3)在同一个时钟周期内,数据寄存部件1输出端的数据输入第一个数据转换部件200进行数据转换处理;第一个数据转换部件200输出的数据再输入到下一个数据转换部件201进行数据转换处理;依此方式,直至数据转换部件2中所有的数据转换部件200-203顺序完成数据转换处理。
5)重复再次数据转换处理。
重复再次数据转换处理过程,直至完成所有规定的数据转换处理过程,得到循环加解密数据处理结果。
附加加解密数据处理用于补充完成循环加解密数据处理未完成的数据转换处理,尤其是当数据转换部件2中数据转换部件的个数不是32的约数时,可通过循环加解密数据处理与附加加解密数据处理共同完成数据转换处理。
参见图3,附加加解密数据处理在循环加解密数据处理之前时的实现步骤1)准备常数阵列。
(1)将密钥扩展处理所得到的常数阵列数据按照地址高低顺序排列,存入常数阵列存储部件301。
(2)根据数据转换处理中数据转换处理部件的个数安排对应宽度和深度①确定循环加解密数据处理中常数阵列的宽度和深度根据循环加解密数据处理中数据转换处理部件的个数安排对应宽度和深度,得到循环加解密数据处理中常数阵列数据宽度与深度的乘积;②确定附加加解密数据处理中常数阵列数据的宽度和深度根据附加加解密数据处理中常数阵列数据的宽度为附加加解密数据处理中数据转换处理部件的个数乘以32,附加加解密数据处理中常数阵列数据的的深度为1;确定附加加解密数据处理中常数阵列数据宽度与深度的乘积为附加加解密数据处理中数据转换处理部件的个数×32×1;③附加加解密数据处理中的常数阵列数据应满足循环加解密数据处理中常数阵列数据宽度与深度的乘积与附加加解密数据处理中常数阵列数据宽度与深度的乘积,两者之和为1024;(3)常数阵列中相同深度的数据构成一行。
2)将外部数据输入数据寄存部件101。
(1)将外部数据输至数据寄存部件101的输入端;(2)在时钟上沿或下沿,把数据寄存部件101输入端的数据传送至其输出端。
3)进行附加数据转换处理。
(1)在该时钟周期内,将常数阵列存储部件301所存储常数阵列对应的数据分别输至数据转换部件21中所有的数据转换部件210、211……(2)在同一个时钟周期内,数据寄存部件101输出端的数据输入到第一个数据转换部件210进行数据转换处理;第一个数据转换部件210输出的数据再输入到下一个数据转换部件211进行数据转换处理;依此方式,直至数据转换部件21中所有的数据转换部件210、211……顺序完成数据转换处理,得到附加加解密数据处理501的数据处理结果。
4)以附加加解密数据处理501的数据处理结果作为循环加解密数据处理4中的外部数据,用来完成循环加解密数据处理。
参见图4,附加加解密数据处理在循环加解密数据处理之后时的实现步骤1)准备常数阵列。
(1)将循环加解密数据处理所得到的常数阵列数据按照地址高低顺序排列,存入常数阵列存储部件302。
(2)根据数据转换处理中数据转换处理部件的个数安排对应宽度和深度①确定循环加解密数据处理中常数阵列的宽度和深度根据循环加解密数据处理中数据转换处理部件的个数安排对应宽度和深度,得到循环加解密数据处理中常数阵列数据宽度与深度的乘积;②确定附加加解密数据处理中常数阵列数据的宽度和深度根据附加加解密数据处理中常数阵列数据的宽度为附加加解密数据处理中数据转换处理部件的个数乘以32,附加加解密数据处理中常数阵列数据的的深度为1;确定附加加解密数据处理中常数阵列数据宽度与深度的乘积为附加加解密数据处理中数据转换处理部件的个数×32×1;③附加加解密数据处理中的常数阵列数据应满足循环加解密数据处理中常数阵列数据宽度与深度的乘积与附加加解密数据处理中常数阵列数据宽度与深度的乘积,两者之和为1024;(3)常数阵列中相同深度的数据构成一行。
2)将循环加解密数据处理4得到的数据输入数据寄存部件102。
(1)将循环加解密数据处理4得到的数据输至数据寄存部件102的输入端;(2)在时钟上沿或下沿,把数据寄存部件102输入端的数据传送至其输出端。
3)进行附加数据转换处理。
(1)在该时钟周期内,将常数阵列存储部件302所存储常数阵列对应的数据分别输至数据转换部件22中所有的数据转换部件222、221……(2)在同一个时钟周期内,数据寄存部件102输出端的数据输入到第一个数据转换部件220进行数据转换处理;第一个数据转换部件220输出的数据再输入到下一个数据转换部件221进行数据转换处理;依此方式,直至数据转换部件22中所有的数据转换部件220、221……顺序完成数据转换处理,得到附加加解密数据处理502的数据处理结果。
4)附加加解密数据处理502的数据处理结果即为最终加解密数据处理结果。
附加加解密数据处理在循环加解密数据处理之前或之后进行均可,也可在之前和之后均附加该处理,参见图5。附加加解密数据处理中的数据转换处理部件可以是一个、二个或多个。
实施例数据转换部件2为4个,即数据转换部件200-203,常数阵列宽度为128bit,深度为8,采用循环加解密数据处理的方法进行加解密处理。参见图2,实现步骤如下1)准备常数阵列。
(1)将常数阵列存入常数阵列存储部件3;(2)若数据转换处理中的数据转换处理部件为4个,则常数阵列的宽度为128bit、深度为8。
(3)将128bit的常数阵列数据与深度8对应划分为8行,每行分别命名为rk0,rk1,…rk7;将每行128bit的常数阵列数据分为4个32bit的数据。rk0分为rk0a、rk0b、rk0c、rk0d;rk1分为rk1a、rk1b、rk1c、rk1d……2)将外部数据输入数据寄存部件1。
(1)将外部数据输至数据寄存部件1的输入端。外部数据是128bit的数据,分为4个32bit的数据,分别命名为A0、A1、A2、A3。
(2)在时钟上沿或下沿,把数据寄存部件1输入端的数据传送至数据寄存部件1的输出端,数据寄存部件1输出128bit,分为4个32bit数据的数据,分别命名为a0、a1、a2、a3。
3)进行首次数据转换处理。
(1)在该时钟周期内,将常数阵列存储部件3所存储常数阵列的第一行对应的数据分别输至所有的数据转换部件200-203。
(2)在同一个时钟周期内,数据寄存部件1输出端的数据输入第一个数据转换部件200进行数据转换处理;第一个数据转换部件200输出的数据再输入下一个数据转换部件201进行数据转换处理;依此方式,直至所有的数据转换部件即数据转换部件200-203顺序完成数据转换处理。例如将数据寄存部件1输出端的数据a0、a1、a2、a3及常数阵列存储部件3输出的数据rk0a输送至数据转换部件200,转换处理后的数据仍然是128bit,分别命名为B0、B1、B2、B3;将数据转换部件200输出的数据B0、B1、B2、B3及常数阵列存储部件3输出的数据rk0b输送至数据转换部件201,转换处理后的数据仍然是128bit,分别命名为C0、C1、C2、C3;将数据转换部件201输出的数据C0、C1、C2、C3及常数阵列存储部件3输出的数据rk0c输送至数据转换部件202,转换处理后的数据仍然是128bit,分别命名为D0、D1、D2、D3;将数据转换部件202输出的数据D0、D1、D2、D3及常数阵列存储部件3输出的数据rk0d输送至数据转换部件203,转换处理后的数据仍然是128bit,分别命名为E0、E1、E2、E3;E0、E1、E2、E3即是首次数据转换处理的结果数据。
4)进行再次数据转换处理。
(1)在时钟沿到来的时刻,将前次数据转换处理的数据E0、E1、E2、E3存至数据寄存部件1;将数据寄存部件1的输出端数据e0、e1、e2、e3依次输入数据转换部件200-203;(2)将常数阵列存储部件3所存储的常数阵列的下一行对应的数据rk1a、rk1b、rk1c、rk1d分别输入数据转换部件200-203;(3)进行再次数据转换。
5)重复再次数据转换处理,得到加解密数据处理结果。
再次数据转换处理每进行一次,即完成一个数据转换处理周期。将再次数据转换处理循环处理6次,即数据转换处理共进行8次,最后一次数据转换处理后输出的数据即为最终数据处理结果。
当数据转换部件2为2个时,循环加解密数据处理共进行16个时钟周期完成一次加解密处理。当数据转换部件2为8个时,循环加解密数据处理共进行4个时钟周期完成一次加解密处理。当数据转换部件2为16个时,循环加解密数据处理共进行2个时钟周期完成一次加解密处理。
权利要求
1.一种实现SMS4密码算法中加解密处理的方法,其特征在于该方法包括循环加解密数据处理,所述循环加解密数据处理的实现步骤包括1)准备常数阵列根据数据转换处理部件的个数安排常数阵列数据的宽度和深度,相同深度的数据构成一行;2)将外部数据输入数据寄存部件在时钟上沿或下沿,把数据寄存部件输入端的数据传送至该数据寄存部件的输出端;3)进行首次数据转换处理(1)在该时钟周期内,将常数阵列存储部件所存储常数阵列的第一行对应的数据分别输至所有的数据转换部件;(2)在同一个时钟周期内,数据寄存部件输出端的数据输入第一个数据转换部件进行数据转换处理;第一个数据转换部件输出的数据再输入到下一个数据转换部件进行数据转换处理;依此方式,直至所有的数据转换部件顺序完成数据转换处理;4)进行再次数据转换处理(1)在下一个时钟沿到来的时刻,将前次数据转换处理的数据存至数据寄存部件;(2)在该时钟周期内,将常数阵列存储部件所存储常数阵列的下一行对应的数据分别输至所有的数据转换部件;(3)在同一个时钟周期内,数据寄存部件输出端的数据输入第一个数据转换部件进行数据转换处理;第一个数据转换部件输出的数据再输入到下一个数据转换部件进行数据转换处理;依此方式,直至所有的数据转换部件顺序完成数据转换处理;5)重复再次数据转换处理重复再次数据转换处理过程,直至完成所有规定的数据转换处理过程,得到循环加解密数据处理结果。
2.根据权利要求1所述的实现SMS4密码算法中加解密处理的方法,其特征在于所述的准备常数阵列包括(1)将密钥扩展处理所得到的常数阵列数据按照地址高低顺序排列,存入常数阵列存储部件;(2)根据数据转换处理中数据转换处理部件的个数安排对应宽度和深度,且宽度与深度的乘积为1024;(3)常数阵列中相同深度的数据构成一行。
3.根据权利要求1所述的实现SMS4密码算法中加解密处理的方法,其特征在于所述的循环加解密数据处理之前加有附加加解密数据处理,所述附加加解密数据处理的实现步骤包括1)准备常数阵列根据附加加解密数据处理中数据转换处理部件的个数安排常数阵列数据的宽度,常数阵列数据的深度为1;相同深度的数据构成一行;2)将外部数据输入数据寄存部件(1)将外部数据输至数据寄存部件的输入端;(2)在时钟上沿或下沿,把数据寄存部件输入端的数据传送至该数据寄存部件的输出端;3)进行附加数据转换处理(1)在该时钟周期内,将常数阵列存储部件所存储常数阵列对应的数据分别输至附加加解密处理中的所有数据转换部件;(2)在同一个时钟周期内,数据寄存部件输出端的数据输入到第一个数据转换部件进行数据转换处理;第一个数据转换部件输出的数据再输入到下一个数据转换部件进行数据转换处理;依此方式,直至附加加解密数据处理中的所有数据转换部件顺序完成数据转换处理,得到附加加解密数据处理结果;4)以附加加解密数据处理结果作为循环加解密数据处理中的外部数据。
4.根据权利要求1或3所述的实现SMS4密码算法中加解密处理的方法,其特征在于所述的循环加解密数据处理之后加有附加加解密数据处理,所述附加加解密数据处理的实现步骤包括1)准备常数阵列根据附加加解密数据处理中数据转换处理部件的个数安排常数阵列数据的宽度,常数阵列数据的深度为1;相同深度的数据构成一行;2)将循环加解密数据处理得到的数据输入数据寄存部件(1)将循环加解密数据处理得到的数据输至数据寄存部件的输入端;(2)在时钟上沿或下沿,把数据寄存部件输入端的数据传送至该数据寄存部件的输出端;3)进行附加数据转换处理(1)在该时钟周期内,将常数阵列存储部件所存储常数阵列对应的数据分别输至附加加解密数据处理中的所有数据转换部件;(2)在同一个时钟周期内,数据寄存部件输出端的数据输入到第一个数据转换部件进行数据转换处理;第一个数据转换部件输出的数据再输入到下一个数据转换部件进行数据转换处理;依此方式,直至附加加解密数据处理中的所有数据转换部件顺序完成数据转换处理,得到附加加解密数据处理结果;4)附加加解密数据处理结果即为最终加解密数据处理结果。
5.根据权利要求4所述的实现SMS4密码算法中加解密处理的方法,其特征在于所述的准备常数阵列包括1)将密钥扩展处理所得到的常数阵列数据按照地址高低顺序排列,存入常数阵列存储部件;2)根据数据转换处理中数据转换处理部件的个数安排对应宽度和深度(1)确定循环加解密数据处理中常数阵列的宽度和深度根据循环加解密数据处理中数据转换处理部件的个数安排对应宽度和深度,得到循环加解密数据处理中常数阵列数据宽度与深度的乘积;(2)确定附加加解密数据处理中常数阵列数据的宽度和深度根据附加加解密数据处理中常数阵列数据的宽度为附加加解密数据处理中数据转换处理部件的个数乘以32,附加加解密数据处理中常数阵列数据的的深度为1;确定附加加解密数据处理中常数阵列数据宽度与深度的乘积为附加加解密数据处理中数据转换处理部件的个数×32×1;(3)循环加解密数据处理中常数阵列数据宽度与深度的乘积与附加加解密数据处理中常数阵列数据宽度与深度的乘积,两者之和为1024;3)常数阵列中相同深度的数据构成一行。
6.根据权利要求5所述的实现SMS4密码算法中加解密处理的方法,其特征在于所述的外部数据输入数据寄存部件包括(1)将外部数据输至数据寄存部件的输入端;(2)在时钟上沿或下沿,把数据寄存部件输入端的数据传送至该数据寄存部件的输出端。
7.根据权利要求6所述的实现SMS4密码算法中加解密处理的方法,其特征在于所述的附加数据转换处理中的数据转换处理部件为一个、二个或多个。
全文摘要
一种实现SMS4密码算法中加解密处理的方法,该方法的循环加解密数据处理步骤首先是准备常数阵列,将外部数据输入数据寄存部件,进行首次数据转换处理;然后进行再次数据转换处理;再后重复再次数据转换处理,直至完成所有规定的数据转换处理过程,得到循环加解密数据处理结果。本发明解决了背景技术中数据转换处理的循环次数多及加密效率低的技术问题。采用本发明设计集成电路,可大大降低系统的干扰及成本。
文档编号G09C1/00GK1845213SQ20061004186
公开日2006年10月11日 申请日期2006年3月2日 优先权日2006年3月2日
发明者鹿甲寅, 曹军, 颜湘, 黄振海 申请人:西安西电捷通无线网络通信有限公司