AVR单片机的RC5和RC6算法比较与改进
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取值表
(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加密算法过程伪代码表示
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)
《AVR单片机的RC5和RC6算法比较与改进(第2页)》