Atmega128单片机的RC5和RC6算法比较与改进
密钥。值得注意的是,每当用户输入的用户密钥发生改变时,必须重新执行混合密钥生成过程,并且重新给Flash装载重新生成后的混合密钥表。在本程序中,RC5混合密钥表共占据52个8位寄存单元,RC6混合密钥表共占据56个8位存储单元。
⑥在本程序中运用加法运算以及移位运算实现了16位二进制数乘以16位二进制数的无符号运算。该运算的子程序如下:
chengfa:clr result2
clr result3
ldi count1,16
lsr chengshu1
ror chengshu0
chengfa0:
brcc chengfa1
add result2,beichengshu0
adc result3,beichengshu1
chengfa1:
ror result3
ror result2
ror result1
ror result0
dec count1
brne chengfa0
ret
3 RC5及RC6算法实验结果及其比较与分析
RC5及RC6算法实验的混合密钥过程、加密过程、解密过程和总体过程的效果比较如表3、4、5、6所列。
表3 RC5及RC6算法混合密钥过程效果比较
混合密钥生成过程 | 周期计数 | 停止观察/μs | 程序大小/字 | c | t |
RC5算法 | 15 248 | 1270.67 | 141 | 8 | 26 |
RC6算法 | 15 246 | 1270.50 | 141 | 8 | 28 |
表4 RC5及RC6算法加密过程效果比较
加密过程(不考虑生成混合密钥的时间) | 周期计数 | 停止观察/μs | 程序大小/字 | 共处理数据的位数 | 效率/(位/s) |
RC5算法 | 2511 | 209.25 | 66 | 32 | 约为152 927 |
RC6算法 | 62529 | 5210.75 | 170 | 64 | 约为12 282 |
表5 RC5及RC6算法解密过程效果比较
解密过程(不考虑生成混合密钥的时间) | 周期计数 | 停止观察/μs | 程序大小/字 | 共处理数据的位数 | 效率/(位/s) |
RC5 算法 | 2509 | 209.08 | 68 | 32 | 约为153 051 |
RC6 算法 | 62527 | 5210.58 | 176 | 64 | 约为12 283 |
表6 RC5及RC6算法总体过程效果比较
总体算法过程(考虑生成混合密钥的时间,不考虑数据传输所用的) | 周期计数 | 停止观察/μs | 程序大小/字 | 共处理数据的位数 | 效率/(位/s) |
RC5算法 | 20 260 | 1688.33 | 267 | 32 | 约为18 594 |
RC6算法 | 140 274 | 11 689.50 | 455 | 64 | 约为5475 |
由表3可以发现,RC6算法和RC5算法在混合密钥生成时程序的大小相同,但量RC6算法却比RC5算法省时。这是因为根据混合密钥生在方法在执行循环,最终生成混合密钥时要执行比较操作。当超出了比较范围t时,要对指针地址重新复位。RC6算法t的取值大于RC5算法中t的取值,因此RC6算法执行了较少的复位操作。从而节省了运行周期,故RC6算法比RC5算法在生成混合密钥时省时。
以上所有实验结果均是在AVR Studio4.07仿真软件上选用Atmel公司的Atmega128高速嵌入式单片机为实验设备平台。选取参数w=16、r=12、b=16,并根据计算公式求得c=8,t=26(RC5算法)或者t=28(RC6算法)在12MHz运行速度下模拟所得。
从实验结果所得的表3、表4、表5、表6可以明确得出以下结论。
①从程序的执行效率来看,无论在加密还是在解密过程中,RC5算法都要比RC6算法执行效率高。
因此,在一些非常注重程序执行效率,而对数据安全性要求不是非常高的情况下,应该采用RC5算法。
②从程序的执行时间来看,无论在加密过程不是在解密过程中,RC5算法都要比RC6算法省时。因此,在一些对程序执行时间长短要求很高,对数据安全性要求不是非常高的情况下,可以采用RC5算法。
③从程序的大小来看,无论在加密过程中还是在解密过程中,RC5算法都要比RC6算法更简洁。因此,在一些对程序所用空间大小要求很高,对数据安全性要求不是非常高的情况下,可以采用RC5算法。
④从安全性角度考虑,RC6算法是在RC5算法基础之上针对RC5算法中的漏洞,主要是循环移位的位移量并不取决于要移动次数的所有比特,通过采用引入乘法运算来决定循环移位次数的方法,对RC5算法进行了改进,从而大大提高了RC6算法的安全性。因此,在一些对数据安全性要求很高的情况下,应该采用RC6算法。
结语
RC5及RC6算法是两种新型的分组密码,它们都具有可变的字长,可变的加密轮数,可变的密钥长度;同时,它们又只使用了常见的初等运算操作,这使它们有很好的适应性,很高的运算速度,并且非常适合于硬件和软件实现。两种算法各有其优缺点,在工程应用中应该根据实际需要选择最适合的方法,以得到最优的效果。
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)