AVR单片机的RC5和RC6算法比较与改进
日期:2007-4-20flash
引言
在无线局域网中,传输的介质主要是无线电波和红外线,任何具有接收能力的窍听者都有可能拦截无线信道中的数据,掌握传输的内容,造成数据泄密。因此,对于无线局域网来说,数据的加密是关键技术之一。
avr高速嵌入式单片机是8位risc mcu,执行大多数指令只需一个时钟周期,速度快(8mhz avr的运行速度约等于200mhz c51的运行速度);32个通用寄存器直接与alu相连,消除和运算瓶颈。内嵌可串行下载或自我编程的flash和epprom,功能繁多,具有多种运行模式。
依照ieee1999年发布的802.11无线局域网协议标准,采用atmel公司的atmega128高速嵌入式单片机,开发无线数据传输装置。为了实现无线数据传输时的安全性,同时尽可能节省成本,采用软件进行加密、解密。这就对算法的简法性、高速性及适应性提出了很高的要求。rc5和rc6两种新型的分组加密算法能够比较好地满足上述的要求。
1 rc5及rc6算法
1.1 rc5及rc6的参数
rc5及rc6是参数变量的分组算法,实际上是由三个参数确定的一个加密算法族。一个特定的rc5或者rc6可以表示为rc5-w/r/b或者rc6-w/r/b。其中这三个参数w、f和b分别按照表1所列定义。表1 rc5及rc6算法参数定义
参 数 | 定 义 | 常 用 |
w | 以比特表示的字的尺寸 | 16,32,64 |
r | 加密轮数 | 0~255 |
b | 密钥的字节长度 | 0~255 |
1.2 rc5及rc6字运算部件
rc5及rc6均由三部分组成,分别为混合密钥生成过程、加密过程和解密过程。在这两种算法中,共使用了六种基本运算:
①模2w加法运算,表示为“+”;
②模2w减法运算,表示为“-”;
③逐位异或运算,表示为+;
④循环左移,字a循环左移b比特表示为“a<<
⑤循环右移,字a循环右移b比特表示为“a>>>b”;
⑥模2w乘法,表示为“×”。
rc5算法运用了上述的①~⑤运算部分,rc6算法使用了上述所有的运算部件。
1.3 rc5算法
(1)rc5算法混合密钥生成过程的伪代码表示
s[0]=pw
for i=1 to t-1 do
s[i]=s[i-1]+qw
输入比特数大小为8,密钥长度为b的用户密钥k[0]至k[b-1]
转换k[0]至k[b-1]为数组长度为c,比特数为w的l[]数组
i=j=0 x=y=0
do 3×max(t,c)times:
s[i]=(s[i]+x+y)<<<3;x=s[i];i=(i+1)mod t
l[j]=(l[j]+x+y)<<<(x,y);x=l[j];j=(j+1)modc
其中c=[b×8/w]方括号表示上取整运算,t=2r+2,当w分别为16、32、64时,常数pw、qw分别如表2所列。表2 常数pw、qw取值表
w | 16 | 32 | 64 |
pw | 0xb7e1 | 0xb7e15163 | 0xb7e151628aed2a6b |
qw | 0x9e37 | 0x9e3779b9 | 0x9e3770b97f4a7c15 |
(2)rc5加密算法过程的伪代码表示
input(a,b)
a=a+s(0)b=b+s[1]
for i=1 to r do
a=((a+b)<<