本发明涉及加密算法,特别涉及一种基于51系列单片机特殊寄存器的高速3des算法。
背景技术:
1、密码学中,三重数据加密算法,或称3des,是一种对称密钥加密块密码,相当于是对每个数据块应用三次数据加密标准(des)算法。由于计算机运算能力的增强,原版des密码的密钥长度变得容易被暴力破解;3des即是设计用来提供一种相对简单的方法,即通过增加des的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。
2、3des使用56位密钥和分组加密的方法,而在分组加密的方法中,将待加密的明文被分成64位大小的文本块然后再按照指定的规则进行置换及相关的运算。采用传统方法编程,在置换环节需要使用字节型的数组变量,用于定义在不同的计算环节中数据位的置换规则,数组变量的数量为4个,共占用内存208字节。其中:
3、(1)用于定义第1次置换规则,即ip置换规则的数组变量占用64字节,本发明中变量名称定义为bptimes_1;
4、(2)用于定义第2次置换规则,即扩展置换规则的数组变量占用48个字节,本发明中变量名称定义为bpexp32_48;
5、(3)用于定义第3次置换规则的数组变量占用32字节,本发明中变量名称定义为bptimes_3;
6、(4)用于定义第4次置换规则,即最终置换规则的数组变量占用64字节,本发明中变量名称定义为bptimes_4。
7、使用传统编程方式时,调用字节型数组变量,编译时调用的指令较多,指令周期数量多,算法流程如下:
8、待加密的明文数据首先完成第1次置换,然后需要进行16轮的运算,每一轮需要依次按照第2次和第3次置换规则完成运算,16轮运算完毕后,最后需要进行第4次置换运算。
9、每次置换运算需要调用相应的字节型数组变量,通过调用数组中元素,获取置换规则中的数据位置信息,运算流程及运行数据如下:
10、(1)第1次置换(即:ip置换)
11、在ip置换中,需要64次的循环,按照置换规则调用bptimes_1的元素,每次数据的换位编译后产生56条指令,对应83个机器周期,总指令数为3584条,共5312个机器周期。
12、(2)第2次置换(即:扩展置换)
13、在扩展置换中,需要16轮的循环,按照置换规则调用bpexp32_48的元素,每一轮进行48次循环运算,每次数据的换位,编译后产生60条指令,对应89个机器周期,总指令数为46080条,共68352个机器周期。
14、(3)第3次置换
15、在第3次置换中,需要16轮的循环,按照置换规则调用bptimes_3的元素,每一轮进行32次循环运算,每次数据的换位,编译后产生56条指令,对应83个机器周期,总指令数为28672条,共42496个机器周期。
16、(4)第4次置换(即:最终置换)
17、在最终置换中,按照置换规则调用bptimes_4的元素,进行64次循环运算,每次数据的换位,编译后产生61条指令,对应86个机器周期,总指令数为3904条,共5504个机器周期。
18、在每次的加密和解密运算过程中,与置换的相关计算中,需要消耗82240条指令,121664个机器周期。因此整个加密、解密过程需要占据大量内存,且效率低下。
19、在每次的加密和解密运算过程中,与置换的相关计算中,需要消耗82240条指令,121664个机器周期。因此整个加密、解密过程需要占据大量内存,且效率低下。
技术实现思路
1、为了解决上述问题,本发明提供了一种基于51系列单片机特殊寄存器的高速3des算法,在置换环节采用特殊寄存器位变量运算代替传统的数组运算,因此变量占用内存更小,运算效率更高。
2、为此,本发明的技术方案是:一种基于51系列单片机特殊寄存器的高速3des算法,应用于具有不少于16个特殊功能寄存器的51系列单片机内,包括以下步骤:
3、1)定义置换规则变量,长度为8字节的数组,变量名称为g_bpbits,用于建立特殊功能寄存器位变量与置换规则的映射;
4、2)定义运算数据变量,长度为8字节的数组,变量名称为g_bphex,用于建立特殊功能寄存器位变量与运算数据的映射;
5、3)进行置换流程,根据置换规则,完成4轮置换,且置换时均利用特殊寄存器的位变量赋值直接进行换位操作。
6、在上述方案的基础上并作为上述方案的优选方案:所述步骤3)中,第1次置换中,根据置换规则,直接完成置换操作;第2次置换中,通过16次循环,完成数据的换位操作;第3次置换中,通过16次循环,完成数据的换位操作;第4次置换中,根据置换规则,直接完成置换操作。
7、在上述方案的基础上并作为上述方案的优选方案:所述步骤1)中,64个比特位对应置换规则,变量类型为sbit,名称为b_bpbit0_0~b_bpbit7_7,分别对应g_bpbits[0]~g_bpbits[7]。
8、在上述方案的基础上并作为上述方案的优选方案:所述步骤2)中,64个比特位对应待运算的数据位置,变量类型为sbit,名称为b_bphex0_0~b_bphex7_7,分别对应g_bphex[0]~g_bphex[7]。
9、在上述方案的基础上并作为上述方案的优选方案:所述步骤3)的换位流程具体步骤如下:
10、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的赋值;
11、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]的赋值;
12、3.3)在第3次置换中,进行16轮运算,按照置换规则通过特殊寄存器的位变量赋值,使用特殊寄存器位变量b_bpbit0_0~b_bpbit3_7对b_bphex0_0~b_bphex3_7进行赋值;
13、3.4)在最终置换中,按照置换规则,通过特殊寄存器的位变量赋值,使用特殊寄存器位变量b_bpbit0_0~b_bpbit7_7对b_bphex0_0~b_bphex7_7进行赋值,只进行一次运算。
14、在3des运算中,加密和解密流程对应的数据置换过程相同,因此将相应的置换规则编写为函数,在运算过程中,直接调用函数即可完成数据的置换。
15、51系列单片机内部通常有21个特殊功能寄存器(简称sfr),每个sfr占1个字节即8比特位,编程时可以直接对每个比特位进行操作和运算,由于执行一条位运算的指令周期通常只有一个指令周期,因此使用51单片机的位运算功能,代替传统的函数运算,不但可以简化算法的计算过程,将程序的代码量减少15%,同时计算时间缩短为十分之一,大大提高了运算速度,降低了硬件成本。
16、与现有技术相比,本发明的有益效果是:
17、1、利用特殊寄存器的位变量运算来完成算法在的置换环节的数据位操作,即根据置换规则使用特殊寄存器的位变量建立与待置换数据的各bit位置对应关系;
18、2、利用特殊寄存器的位变量来代替传统编程形式中的字节型数组变量,使得变量占用的内存减小;
19、3、采用特殊寄存器位变量,计算时直接进行换位操作,避免了循环计算,缩短运算时间;
20、4、位变量运算的编译指令通常为一个时钟周期,占用机器周期少,节省运算资源,代码运行效率高,因此能够快速完成加密和解密操作。