您当前的位置:五五电子网电子知识单片机-工控设备AVR单片机AVR单片机的RC5和RC6算法比较与改进 正文
AVR单片机的RC5和RC6算法比较与改进

AVR单片机的RC5和RC6算法比较与改进

点击数:7337 次   录入时间:03-04 11:50:11   整理:http://www.55dianzi.com   AVR单片机

摘要: rc5及rc6是两种新型的分组密码。avr高速嵌入式 单片机 功能强大,在无线数据传输应用方面很有优势。本文基于atmega128高速嵌入式单片机,实现rc5和rc6加密及解密算法,并对算法进行汇编语言的优化及改进。根据实验结果。对两种算法的优热点进行比较和分析。

关键词: atmega128 rc5 rc6 分组密码 混合密钥 flash

引言

在无线局域网中,传输的介质主要是无线电波和红外线,任何具有接收能力的窍听者都有可能拦截无线信道中的数据,掌握传输的内容,造成数据泄密。因此,对于无线局域网来说,数据的加密是关键技术之一。

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,64r加密轮数0~255b密钥的字节长度0~255

1.2 rc5及rc6字运算部件

rc5及rc6均由三部分组成,分别为混合密钥生成过程、加密过程和解密过程。在这两种算法中,共使用了六种基本运算:

①模2w加法运算,表示为“ ”;

②模2w减法运算,表示为“-”;AVR单片机的RC5和RC6算法比较与改进

③逐位异或运算,表示为 ;

④循环左移,字a循环左移b比特表示为“a<<<b”;

⑤循环右移,字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取值表

w163264pw0xb7e10xb7e151630xb7e151628aed2a6bqw0x9e370x9e3779b90x9e3770b97f4a7c15

(2)rc5加密算法过程的伪代码表示

input(a,b)

a=a s(0)b=b s[1]

for i=1 to r do

a=((a b)<<<b) s[2i]

b=((b a)<<<a) s[2i 1]

output(a,b)

其中初始的a、b分别为要加密的两个比特数为w的数据,最终的a、b分别为加密好的两个比特数为w的数据。

(3)rc5解密算法过程的伪代码表示

input(a,b)

for i=r down to 1 do

b=((b-s[2i 1])>>>a) a

a=((a-s[2i])>>>b) b

a=a-s[0] b=b-s[1]

output (a,b)

其中初始a、b中的数据就是已经加密了的比特数为w的数据,最终的a、b中的数据为解密后的比特数为w的数据。

1.4 rc6算法

(1)rc6算法混合密钥生成过程伪代码表示

rc6混合密钥生成过程与rc5相同,只是t的取值为2r 4。

(2)rc6加密算法过程伪代码表示AVR单片机的RC5和RC6算法比较与改进

input(a,b,c,d)

b=b s[0]d=d s[1]

for i=1 to r do

t=(b×(2b 1))<<<log2w

u=(d×(2d 1))<<<1og2w

a=((a t)<<<t) s[2i]

c=((c u)<<<u) s[2i 1]

(a,b,c,d)=(b,c,d,a)

a=a s[2i 2]c=c s[2i 3]

output(a,b,c,d)

其中初始的a、b、c、d分别为要加密的四个比特数为w的数据,最终的a、b、c、d分别为加密好的四个比特数为w的数据。

(3)rc6解密算法过程的伪代码表示

input(a,b,c,d)

c=c-s[2i 3]a=a-s[2i 2]

for i=1 to r do

(a,b,c,d)=(d,a,b,c)

u=(d×(2d 1))<<<log2w

t=(b×(2b 1))<<<log2w

c=((c-s[2(r-i) 3])>>>t) u

a=((a-s[2(r-i) 2])>>>u) t

d=d-s[1] b=b-s[0]

output(a,b,c,d)

其中初始的a、b、c、d分别为已经被加密的四个比特数为w的数据,最终的a、b、c、d分别为解密后的四个比特数为w的数据。

2 rc5和rc6算法的实现及改进

2.1 avr 单片机 的rc5和rc6算法流程

rc5及rc6算法加密过程实现流程图如图1所示,解密过程实现流程图如图2所示,总体过程流程图如图3所示。

2.2 avr 单片机 rc5和rc6算法的改进

①在进行算法流程的安排时,考虑到avr高速嵌入式 单片机 只有32个8位寄存器,为了节省寄存器的使用,应该在混合密钥生成过程执行后,再把待加密的数据赋予寄存器。这样在混合密钥生成过程以前的寄存器都可以被使用,而不会对整个算法的执行结果造成影响。

②在进行rc5及rc6算法参数的选择时,考虑到avr高速嵌入式 单片机 指令最多只支持16位数据相加以及程序的简洁化,所以在本程序中选择w为16而没有选择w为32,r和b的值依据rivest的建议分别取为12和16。

③在执行算法中的左循环或者右循环运算时,考虑到循环移位的效果,实际循环移位的位数应该为要执行移位次数的低1log2w位。在本程序中为要执行移位次数的后四位。

④在执行算法中的模2w加法运算、模2w减法运算、模2w乘法运算时,由于2w的取值为65536,而2个8位寄存器(0~15位)最高可以表示数据的值为65535,数据再大就要向高位进位,所以在本程序执行上述的算法只需要考虑到2个8位寄存器所表达的值就得到了上述运算的最终结果,而不用再进行模2w运算。

[1] [2]  下一页


本文关键字:单片机  AVR单片机单片机-工控设备 - AVR单片机