一种基于51系列单片机特殊寄存器的高速3DES算法的制作方法

未命名 07-19 阅读:256 评论:0

一种基于51系列单片机特殊寄存器的高速3des算法
技术领域
1.本发明涉及加密算法技术领域,特别涉及一种基于51系列单片机特殊寄存器的高速3des算法。


背景技术:

2.密码学中,三重数据加密算法,或称3des,是一种对称密钥加密块密码,相当于是对每个数据块应用三次数据加密标准(des)算法。由于计算机运算能力的增强,原版des密码的密钥长度变得容易被暴力破解;3des即是设计用来提供一种相对简单的方法,即通过增加des的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。
3.3des使用56位密钥和分组加密的方法,而在分组加密的方法中,将待加密的明文被分成64位大小的文本块然后再按照指定的规则进行置换及相关的运算。采用传统方法编程,在置换环节需要使用字节型的数组变量,用于定义在不同的计算环节中数据位的置换规则,数组变量的数量为4个,共占用内存208字节。其中:
4.(1)用于定义第1次置换规则,即ip置换规则的数组变量占用64字节,本发明中变量名称定义为bptimes_1;
5.(2)用于定义第2次置换规则,即扩展置换规则的数组变量占用48个字节,本发明中变量名称定义为bpexp32_48;
6.(3)用于定义第3次置换规则的数组变量占用32字节,本发明中变量名称定义为bptimes_3;
7.(4)用于定义第4次置换规则,即最终置换规则的数组变量占用64字节,本发明中变量名称定义为bptimes_4。
8.使用传统编程方式时,调用字节型数组变量,编译时调用的指令较多,指令周期数量多,算法流程如下:
9.待加密的明文数据首先完成第1次置换,然后需要进行16轮的运算,每一轮需要依次按照第2次和第3次置换规则完成运算,16轮运算完毕后,最后需要进行第4次置换运算。
10.每次置换运算需要调用相应的字节型数组变量,通过调用数组中元素,获取置换规则中的数据位置信息,运算流程及运行数据如下:
11.(1)第1次置换(即:ip置换)
12.在ip置换中,需要64次的循环,按照置换规则调用bptimes_1的元素,每次数据的换位编译后产生56条指令,对应83个机器周期,总指令数为3584条,共5312个机器周期。
13.(2)第2次置换(即:扩展置换)
14.在扩展置换中,需要16轮的循环,按照置换规则调用bpexp32_48的元素,每一轮进行48次循环运算,每次数据的换位,编译后产生60条指令,对应89个机器周期,总指令数为46080条,共68352个机器周期。
15.(3)第3次置换
16.在第3次置换中,需要16轮的循环,按照置换规则调用bptimes_3的元素,每一轮进
行32次循环运算,每次数据的换位,编译后产生56条指令,对应83个机器周期,总指令数为28672条,共42496个机器周期。
17.(4)第4次置换(即:最终置换)
18.在最终置换中,按照置换规则调用bptimes_4的元素,进行64次循环运算,每次数据的换位,编译后产生61条指令,对应86个机器周期,总指令数为3904条,共5504个机器周期。
19.在每次的加密和解密运算过程中,与置换的相关计算中,需要消耗82240条指令,121664个机器周期。因此整个加密、解密过程需要占据大量内存,且效率低下。
20.在每次的加密和解密运算过程中,与置换的相关计算中,需要消耗82240条指令,121664个机器周期。因此整个加密、解密过程需要占据大量内存,且效率低下。


技术实现要素:

21.为了解决上述问题,本发明提供了一种基于51系列单片机特殊寄存器的高速3des算法,在置换环节采用特殊寄存器位变量运算代替传统的数组运算,因此变量占用内存更小,运算效率更高。
22.为此,本发明的技术方案是:一种基于51系列单片机特殊寄存器的高速3des算法,应用于具有不少于16个特殊功能寄存器的51系列单片机内,包括以下步骤:
23.1)定义置换规则变量,长度为8字节的数组,变量名称为g_bpbits,用于建立特殊功能寄存器位变量与置换规则的映射;
24.2)定义运算数据变量,长度为8字节的数组,变量名称为g_bphex,用于建立特殊功能寄存器位变量与运算数据的映射;
25.3)进行置换流程,根据置换规则,完成4轮置换,且置换时均利用特殊寄存器的位变量赋值直接进行换位操作。
26.在上述方案的基础上并作为上述方案的优选方案:所述步骤3)中,第1次置换中,根据置换规则,直接完成置换操作;第2次置换中,通过16次循环,完成数据的换位操作;第3次置换中,通过16次循环,完成数据的换位操作;第4次置换中,根据置换规则,直接完成置换操作。
27.在上述方案的基础上并作为上述方案的优选方案:所述步骤1)中,64个比特位对应置换规则,变量类型为sbit,名称为b_bpbit0_0~b_bpbit7_7,分别对应g_bpbits[0]~g_bpbits[7]。
[0028]
在上述方案的基础上并作为上述方案的优选方案:所述步骤2)中,64个比特位对应待运算的数据位置,变量类型为sbit,名称为b_bphex0_0~b_bphex7_7,分别对应g_bphex[0]~g_bphex[7]。
[0029]
在上述方案的基础上并作为上述方案的优选方案:所述步骤3)的换位流程具体步骤如下:
[0030]
3.1)在ip置换中,将分组后的待运算的8字节明文数据,通过赋值给置换规则变量数组g_bpbits,即可完成特殊寄存器位变量b_bpbit0_0~b_bpbit7_7与运算数据的比特位一一对应,然后根据置换规则将特殊寄存器位变量b_bpbit0_0~b_bpbit7_7依次赋值给特殊寄存器位变量b_bphex0_0~b_bphex7_7,即可完成对运算数据变量数组g_bphex的赋值;
[0031]
3.2)在扩展置换中,进行16轮运算,每一轮运算中,按照置换规则通过特殊寄存器的位变量赋值,使用特殊寄存器位变量b_bpbit0_0~b_bpbit3_7对b_bphex0_0~b_bphex5_7进行赋值,完成32位到48位的扩展;然后使用b_bpbit0_0~b_bpbit5_7,完成对运算数据变量元素g_bphex[0]~g_bphex[3]的赋值;
[0032]
3.3)在第3次置换中,进行16轮运算,按照置换规则通过特殊寄存器的位变量赋值,使用特殊寄存器位变量b_bpbit0_0~b_bpbit3_7对b_bphex0_0~b_bphex3_7进行赋值;
[0033]
3.4)在最终置换中,按照置换规则,通过特殊寄存器的位变量赋值,使用特殊寄存器位变量b_bpbit0_0~b_bpbit7_7对b_bphex0_0~b_bphex7_7进行赋值,只进行一次运算。
[0034]
在3des运算中,加密和解密流程对应的数据置换过程相同,因此将相应的置换规则编写为函数,在运算过程中,直接调用函数即可完成数据的置换。
[0035]
51系列单片机内部通常有21个特殊功能寄存器(简称sfr),每个sfr占1个字节即8比特位,编程时可以直接对每个比特位进行操作和运算,由于执行一条位运算的指令周期通常只有一个指令周期,因此使用51单片机的位运算功能,代替传统的函数运算,不但可以简化算法的计算过程,将程序的代码量减少15%,同时计算时间缩短为十分之一,大大提高了运算速度,降低了硬件成本。
[0036]
与现有技术相比,本发明的有益效果是:
[0037]
1、利用特殊寄存器的位变量运算来完成算法在的置换环节的数据位操作,即根据置换规则使用特殊寄存器的位变量建立与待置换数据的各bit位置对应关系;
[0038]
2、利用特殊寄存器的位变量来代替传统编程形式中的字节型数组变量,使得变量占用的内存减小;
[0039]
3、采用特殊寄存器位变量,计算时直接进行换位操作,避免了循环计算,缩短运算时间;
[0040]
4、位变量运算的编译指令通常为一个时钟周期,占用机器周期少,节省运算资源,代码运行效率高,因此能够快速完成加密和解密操作。
附图说明
[0041]
以下结合附图和本发明的实施方式来作进一步详细说明
[0042]
图1为本发明的整体置换逻辑图;
[0043]
图2为本发明ip置换过程数据交换示意图;
[0044]
图3为本发明扩展置换过程示意图;
[0045]
图4为本发明第3次置换过程示意图;
[0046]
图5为本发明第4次置换过程示意图。
具体实施方式
[0047]
本实施例所述的高速3des算法,应用于具有不少于16个特殊功能寄存器的51系列单片机内。51系列单片机内部有特殊功能寄存器(简称sfr),每个sfr占1个字节即8比特位,编程时可以直接对每个比特位进行操作和运算,由于执行一条位运算的指令周期通常只有
一个指令周期,因此使用51单片机的位运算功能,代替传统的函数运算,不但可以简化算法的计算过程,将程序的代码量减少15%,同时计算时间缩短为十分之一,大大提高了运算速度,降低了硬件成本。
[0048]
算法具体如下:
[0049]
1.利用特殊寄存器的位变量采用特殊寄存器的位变量,代替字节型数组变量,占用内存16个字节即128个比特位,分别对应交换规则中的数据位信息,如图1所示,其中:
[0050]
1.1)定义置换规则变量,长度为8字节的数组,该变量名称为g_bpbits,用于建立特殊功能寄存器位变量与置换规则的映射;64个比特位对应置换规则,变量类型为sbit,名称为b_bpbit0_0~b_bpbit7_7,分别对应g_bpbits[0]~g_bpbits[7];
[0051][0052]
1.2)定义运算数据变量,长度为8字节的数组,该变量名称为g_bphex,用于建立特殊功能寄存器位变量与运算数据的映射;
[0053]
64个比特位对应待运算的数据位置,变量类型为sbit,名称为b_bphex0_0~b_bphex7_7,分别对应g_bphex[0]~g_bphex[7]。
[0054][0055]
2.采用位变量,计算时直接进行换位操作,编译指令通常为一个时钟周期,
[0056]
2.1)在ip置换中,将分组后的待运算的8字节明文数据,通过赋值给置换规则变量数组g_bpbits,即可完成特殊寄存器位变量b_bpbit0_0~b_bpbit7_7与运算数据的比特位一一对应,然后根据置换规则将特殊寄存器位变量b_bpbit0_0~b_bpbit7_7依次赋值给特殊寄存器位变量b_bphex0_0~b_bphex7_7,即可完成对运算数据变量数组g_bphex的赋值。只进行一次运算,完成对数据的换位,编译后产生128条指令,对应254个机器周期。
[0057]
这一轮的置换规则数据交换流程见图2,具体如下:
[0058]
b_bphex0_7=b_bpbit7_6;b_bphex0_6=b_bpbit6_6;
[0059]
b_bphex0_5=b_bpbit5_6;b_bphex0_4=b_bpbit4_6;
[0060]
b_bphex0_3=b_bpbit3_6;b_bphex0_2=b_bpbit2_6;
[0061]
b_bphex0_1=b_bpbit1_6;b_bphex0_0=b_bpbit0_6;
[0062]
b_bphex1_7=b_bpbit7_4;b_bphex1_6=b_bpbit6_4;
[0063]
b_bphex1_5=b_bpbit5_4;b_bphex1_4=b_bpbit4_4;
[0064]
b_bphex1_3=b_bpbit3_4;b_bphex1_2=b_bpbit2_4;
[0065]
b_bphex1_1=b_bpbit1_4;b_bphex1_0=b_bpbit0_4;
[0066]
b_bphex2_7=b_bpbit7_2;b_bphex2_6=b_bpbit6_2;
[0067]
b_bphex2_5=b_bpbit5_2;b_bphex2_4=b_bpbit4_2;
[0068]
b_bphex2_3=b_bpbit3_2;b_bphex2_2=b_bpbit2_2;
[0069]
b_bphex2_1=b_bpbit1_2;b_bphex2_0=b_bpbit0_2;
[0070]
b_bphex3_7=b_bpbit7_0;b_bphex3_6=b_bpbit6_0;
[0071]
b_bphex3_5=b_bpbit5_0;b_bphex3_4=b_bpbit4_0;
[0072]
b_bphex3_3=b_bpbit3_0;b_bphex3_2=b_bpbit2_0;
[0073]
b_bphex3_1=b_bpbit1_0;b_bphex3_0=b_bpbit0_0;
[0074]
b_bphex4_7=b_bpbit7_7;b_bphex4_6=b_bpbit6_7;
[0075]
b_bphex4_5=b_bpbit5_7;b_bphex4_4=b_bpbit4_7;
[0076]
b_bphex4_3=b_bpbit3_7;b_bphex4_2=b_bpbit2_7;
[0077]
b_bphex4_1=b_bpbit1_7;b_bphex4_0=b_bpbit0_7;
[0078]
b_bphex5_7=b_bpbit7_5;b_bphex5_6=b_bpbit6_5;
[0079]
b_bphex5_5=b_bpbit5_5;b_bphex5_4=b_bpbit4_5;
[0080]
b_bphex5_3=b_bpbit3_5;b_bphex5_2=b_bpbit2_5;
[0081]
b_bphex5_1=b_bpbit1_5;b_bphex5_0=b_bpbit0_5;
[0082]
b_bphex6_7=b_bpbit7_3;b_bphex6_6=b_bpbit6_3;
[0083]
b_bphex6_5=b_bpbit5_3;b_bphex6_4=b_bpbit4_3;
[0084]
b_bphex6_3=b_bpbit3_3;b_bphex6_2=b_bpbit2_3;
[0085]
b_bphex6_1=b_bpbit1_3;b_bphex6_0=b_bpbit0_3;
[0086]
b_bphex7_7=b_bpbit7_1;b_bphex7_6=b_bpbit6_1;
[0087]
b_bphex7_5=b_bpbit5_1;b_bphex7_4=b_bpbit4_1;
[0088]
b_bphex7_3=b_bpbit3_1;b_bphex7_2=b_bpbit2_1;
[0089]
b_bphex7_1=b_bpbit1_1;b_bphex7_0=b_bpbit0_1。
[0090]
2.2)在扩展置换中,进行16轮运算,每一轮运算中,按照置换规则通过特殊寄存器的位变量赋值,使用特殊寄存器位变量b_bpbit0_0~b_bpbit3_7对b_bphex0_0~b_bphex5_7进行赋值,完成32位到48位的扩展;然后对进行运算,再按照置换规则将48位合并为32位,通过特殊寄存器的位变量赋值,使用特殊寄存器位变量b_bpbit0_0~b_bpbit5_7对b_bphex0_0~b_bphex5_7进行赋值,完成对运算数据变量元素g_bphex[0]~g_bphex[5]的赋值。
[0091]
其中32位扩展为48位,编译后产生96条指令,对应191个机器周期,总指令数为1536条,共3056个机器周期。
[0092]
这一轮置换对应的数据交换流程见图3所示,具体如下:
[0093]
b_bphex0_7=b_bpbit3_0;b_bphex0_6=b_bpbit0_7;
[0094]
b_bphex0_5=b_bpbit0_6;b_bphex0_4=b_bpbit0_5;
[0095]
b_bphex0_3=b_bpbit0_4;b_bphex0_2=b_bpbit0_3;
[0096]
b_bphex0_1=b_bpbit0_4;b_bphex0_0=b_bpbit0_3;
[0097]
b_bphex1_7=b_bpbit0_2;b_bphex1_6=b_bpbit0_1;
[0098]
b_bphex1_5=b_bpbit0_0;b_bphex1_4=b_bpbit1_7;
[0099]
b_bphex1_3=b_bpbit0_0;b_bphex1_2=b_bpbit1_7;
[0100]
b_bphex1_1=b_bpbit1_6;b_bphex1_0=b_bpbit1_5;
[0101]
b_bphex2_7=b_bpbit1_4;b_bphex2_6=b_bpbit1_3;
[0102]
b_bphex2_5=b_bpbit1_4;b_bphex2_4=b_bpbit1_3;
[0103]
b_bphex2_3=b_bpbit1_2;b_bphex2_2=b_bpbit1_1;
[0104]
b_bphex2_1=b_bpbit1_0;b_bphex2_0=b_bpbit2_7;
[0105]
b_bphex3_7=b_bpbit1_0;b_bphex3_6=b_bpbit2_7;
[0106]
b_bphex3_5=b_bpbit2_6;b_bphex3_4=b_bpbit2_5;
[0107]
b_bphex3_3=b_bpbit2_4;b_bphex3_2=b_bpbit2_3;
[0108]
b_bphex3_1=b_bpbit2_4;b_bphex3_0=b_bpbit2_3;
[0109]
b_bphex4_7=b_bpbit2_2;b_bphex4_6=b_bpbit2_1;
[0110]
b_bphex4_5=b_bpbit2_0;b_bphex4_4=b_bpbit3_7;
[0111]
b_bphex4_3=b_bpbit2_0;b_bphex4_2=b_bpbit3_7;
[0112]
b_bphex4_1=b_bpbit3_6;b_bphex4_0=b_bpbit3_5;
[0113]
b_bphex5_7=b_bpbit3_4;b_bphex5_6=b_bpbit3_3;
[0114]
b_bphex5_5=b_bpbit3_4;b_bphex5_4=b_bpbit3_3;
[0115]
b_bphex5_3=b_bpbit3_2;b_bphex5_2=b_bpbit3_1;
[0116]
b_bphex5_1=b_bpbit3_0;b_bphex5_0=b_bpbit0_7。
[0117]
在48位转为32位的规则的计算公式为:计算box中的数据位置bm;每6位一个单位,(首位*2+末位)
×
16+(bit1-bit5),编译后产生312条指令,对应452个机器周期,总指令数为4992条,共7232个机器周期。
[0118]
2.3)在第3次置换中,进行16轮运算,按照置换规则通过特殊寄存器的位变量赋值,使用特殊寄存器位变量b_bpbit0_0~b_bpbit3_7对b_bphex0_0~b_bphex3_7进行赋值;编译后产生64条指令,对应127个机器周期,总指令数为1024条,共2032个机器周期。
[0119]
这一轮的置换规则对应数据交换流程见图4所示,具体如下:
[0120]
b_bphex0_7=b_bpbit1_0;b_bphex0_6=b_bpbit0_1;
[0121]
b_bphex0_5=b_bpbit2_4;b_bphex0_4=b_bpbit2_3;
[0122]
b_bphex0_3=b_bpbit3_3;b_bphex0_2=b_bpbit1_4;
[0123]
b_bphex0_1=b_bpbit3_4;b_bphex0_0=b_bpbit2_7;
[0124]
b_bphex1_7=b_bpbit0_7;b_bphex1_6=b_bpbit1_1;
[0125]
b_bphex1_5=b_bpbit2_1;b_bphex1_4=b_bpbit3_6;
[0126]
b_bphex1_3=b_bpbit0_3;b_bphex1_2=b_bpbit2_6;
[0127]
b_bphex1_1=b_bpbit3_1;b_bphex1_0=b_bpbit1_6;
[0128]
b_bphex2_7=b_bpbit0_6;b_bphex2_6=b_bpbit0_0;
[0129]
b_bphex2_5=b_bpbit2_0;b_bphex2_4=b_bpbit1_2;
[0130]
b_bphex2_3=b_bpbit3_0;b_bphex2_2=b_bpbit3_5;
[0131]
b_bphex2_1=b_bpbit0_5;b_bphex2_0=b_bpbit1_7;
[0132]
b_bphex3_7=b_bpbit2_5;b_bphex3_6=b_bpbit1_3;
[0133]
b_bphex3_5=b_bpbit3_2;b_bphex3_4=b_bpbit0_2;
[0134]
b_bphex3_3=b_bpbit2_2;b_bphex3_2=b_bpbit1_5;
[0135]
b_bphex3_1=b_bpbit0_4;b_bphex3_0=b_bpbit3_7。
[0136]
2.4)在第4次置换中,按照置换规则,通过特殊寄存器的位变量赋值,使用特殊寄存器位变量b_bpbit0_0~b_bpbit7_7对b_bphex0_0~b_bphex7_7进行赋值,只进行一次运算。编译后产生128条指令,对应255个机器周期。
[0137]
这一轮的置换规则对应数据交换流程见图5所示,具体如下:
[0138]
b_bphex0_7=b_bpbit4_0;b_bphex0_6=b_bpbit0_0;
[0139]
b_bphex0_5=b_bpbit5_0;b_bphex0_4=b_bpbit1_0;
[0140]
b_bphex0_3=b_bpbit6_0;b_bphex0_2=b_bpbit2_0;
[0141]
b_bphex0_1=b_bpbit7_0;b_bphex0_0=b_bpbit3_0;
[0142]
b_bphex1_7=b_bpbit4_1;b_bphex1_6=b_bpbit0_1;
[0143]
b_bphex1_5=b_bpbit5_1;b_bphex1_4=b_bpbit1_1;
[0144]
b_bphex1_3=b_bpbit6_1;b_bphex1_2=b_bpbit2_1;
[0145]
b_bphex1_1=b_bpbit7_1;b_bphex1_0=b_bpbit3_1;
[0146]
b_bphex2_7=b_bpbit4_2;b_bphex2_6=b_bpbit0_2;
[0147]
b_bphex2_5=b_bpbit5_2;b_bphex2_4=b_bpbit1_2;
[0148]
b_bphex2_3=b_bpbit6_2;b_bphex2_2=b_bpbit2_2;
[0149]
b_bphex2_1=b_bpbit7_2;b_bphex2_0=b_bpbit3_2;
[0150]
b_bphex3_7=b_bpbit4_3;b_bphex3_6=b_bpbit0_3;
[0151]
b_bphex3_5=b_bpbit5_3;b_bphex3_4=b_bpbit1_3;
[0152]
b_bphex3_3=b_bpbit6_3;b_bphex3_2=b_bpbit2_3;
[0153]
b_bphex3_1=b_bpbit7_3;b_bphex3_0=b_bpbit3_3;
[0154]
b_bphex4_7=b_bpbit4_4;b_bphex4_6=b_bpbit0_4;
[0155]
b_bphex4_5=b_bpbit5_4;b_bphex4_4=b_bpbit1_4;
[0156]
b_bphex4_3=b_bpbit6_4;b_bphex4_2=b_bpbit2_4;
[0157]
b_bphex4_1=b_bpbit7_4;b_bphex4_0=b_bpbit3_4;
[0158]
b_bphex5_7=b_bpbit4_5;b_bphex5_6=b_bpbit0_5;
[0159]
b_bphex5_5=b_bpbit5_5;b_bphex5_4=b_bpbit1_5;
[0160]
b_bphex5_3=b_bpbit6_5;b_bphex5_2=b_bpbit2_5;
[0161]
b_bphex5_1=b_bpbit7_5;b_bphex5_0=b_bpbit3_5;
[0162]
b_bphex6_7=b_bpbit4_6;b_bphex6_6=b_bpbit0_6;
[0163]
b_bphex6_5=b_bpbit5_6;b_bphex6_4=b_bpbit1_6;
[0164]
b_bphex6_3=b_bpbit6_6;b_bphex6_2=b_bpbit2_6;
[0165]
b_bphex6_1=b_bpbit7_6;b_bphex6_0=b_bpbit3_6;
[0166]
b_bphex7_7=b_bpbit4_7;b_bphex7_6=b_bpbit0_7;
[0167]
b_bphex7_5=b_bpbit5_7;b_bphex7_4=b_bpbit1_7;
[0168]
b_bphex7_3=b_bpbit6_7;b_bphex7_2=b_bpbit2_7;
[0169]
b_bphex7_1=b_bpbit7_7;b_bphex7_0=b_bpbit3_7。
[0170]
3.成果比对
[0171]
表1为本实施例在计算中调用7808条指令,需要的12829个机器周期;表2为传统算法中所消耗的机器周期数,在每次的加密过程中,与置换的相关计算中,调用82240条指令,121664个机器周期。
[0172]
表1采用位变量直接进行换位操作(利用特殊寄存器)
[0173]
计算环节指令数机器周期数循环次数轮数总指令数总机器周期数ip置换1282541112825432位扩展为48位规则961911161536305648位转换为32位规则31245211649927232第3次置换6412711610242032最终置换12825511128255总计780812829
[0174]
表2采用字节型变量进行操作(传统算法)
[0175]
计算环节指令数机器周期数循环次数轮数总指令数总机器周期数ip置换568364135845312扩展608948164608068352第3次置换568332162867242496最终置换618664139045504总计82240121664
[0176]
对于相同的密钥和数据,使用同一款51系列单片机装置,按照相同的数据处理流程,对同一组8字节数据的加密和解密,结果对比如下:
[0177]
采用传统的方式进行编程,占用内存资源为746字节,代码空间为5764字节,完成一次加密时间为178ms,完成一次加密和解密的总时间为355ms;
[0178]
采用位运算的方式编程,占用内存资源为698字节,代码空间为4863字节,完成一次加密时间为18ms,完成一次加密和解密的总时间为36ms。
[0179]
由此可知,采用位运算的方式编程,变量占用内存小,计算时直接进行换位操作,编译指令通常为一个时钟周期,代码运行效率高。在3des运算中,加密和解密流程对应的数据置换过程相同,因此将相应的置换规则编写为函数,在运算过程中,直接调用函数即可完成数据的置换。
[0180]
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

技术特征:
1.一种基于51系列单片机特殊寄存器的高速3des算法,应用于具有不少于16个特殊功能寄存器的51系列单片机内,其特征在于:包括以下步骤:1)定义置换规则变量,长度为8字节的数组,变量名称为g_bpbits,用于建立特殊功能寄存器位变量与置换规则的映射;2)定义运算数据变量,长度为8字节的数组,变量名称为g_bphex,用于建立特殊功能寄存器位变量与运算数据的映射;3)进行置换流程,根据置换规则,完成4轮置换,且置换时均利用特殊寄存器的位变量赋值直接进行换位操作。2.如权利要求1所述的一种基于51系列单片机特殊寄存器的高速3des算法,其特征在于:所述步骤3)中,第1次置换中,根据置换规则,直接完成置换操作;第2次置换中,通过16次循环,完成数据的换位操作;第3次置换中,通过16次循环,完成数据的换位操作;第4次置换中,根据置换规则,直接完成置换操作。3.如权利要求1所述的一种基于51系列单片机特殊寄存器的高速3des算法,其特征在于:所述步骤1)中,64个比特位对应置换规则,变量类型为sbit,名称为b_bpbit0_0~b_bpbit7_7,分别对应g_bpbits[0]~g_bpbits[7]。4.如权利要求3所述的一种基于51系列单片机特殊寄存器的高速3des算法,其特征在于:所述步骤2)中,64个比特位对应待运算的数据位置,变量类型为sbit,名称为b_bphex0_0~b_bphex7_7,分别对应g_bphex[0]~g_bphex[7]。5.如权利要求4所述的一种基于51系列单片机特殊寄存器的高速3des算法,其特征在于:所述步骤3)的换位流程具体步骤如下:3.1)在ip置换中,将分组后的待运算的8字节明文数据,通过赋值给置换规则变量数组g_bpbits,即可完成特殊寄存器位变量b_bpbit0_0~b_bpbit7_7与运算数据的比特位一一对应,然后根据置换规则将特殊寄存器位变量b_bpbit0_0~b_bpbit7_7依次赋值给特殊寄存器位变量b_bphex0_0~b_bphex7_7,即可完成对运算数据变量数组g_bphex的赋值;3.2)在扩展置换中,进行16轮运算,每一轮运算中,按照置换规则通过特殊寄存器的位变量赋值,使用特殊寄存器位变量b_bpbit0_0~b_bpbit3_7对b_bphex0_0~b_bphex5_7进行赋值,完成32位到48位的扩展;然后使用b_bpbit0_0~b_bpbit5_7,完成对运算数据变量元素g_bphex[0]~g_bphex[3]的赋值;3.3)在第3次置换中,进行16轮运算,按照置换规则通过特殊寄存器的位变量赋值,使用特殊寄存器位变量b_bpbit0_0~b_bpbit3_7对b_bphex0_0~b_bphex3_7进行赋值;3.4)在最终置换中,按照置换规则,通过特殊寄存器的位变量赋值,使用特殊寄存器位变量b_bpbit0_0~b_bpbit7_7对b_bphex0_0~b_bphex7_7进行赋值,只进行一次运算。

技术总结
本发明公开了一种基于51系列单片机特殊寄存器的高速3DES算法,应用于具有不少于16个特殊功能寄存器的51系列单片机内,利用特殊寄存器的位变量运算来完成算法在置换环节的数据位操作,即根据置换规则使用特殊寄存器的位变量建立与待置换数据的各BIT位置对应关系。本发明用特殊寄存器的位变量来代替传统编程形式中的字节型数组变量,使得变量占用的内存减小;采用位变量,计算时直接进行换位操作,避免了循环计算,缩短运算时间;节省运算资源,代码运行效率高,因此能够快速完成加密和解密操作。作。作。


技术研发人员:付强 付丽华
受保护的技术使用者:中伏能源嘉兴股份有限公司
技术研发日:2023.04.06
技术公布日:2023/7/18
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐