RC5密码是一种由块尺寸、轮数和密钥长度参数化的非常快速和简单的算法。这些参数可以调整以满足不同的安全目的。性能和出口能力。
RC5加密算法有四种形式。第一种是原始RC5块加密。RC5密码采用固定输入长度,依靠密钥转换产生固定长度的输出块。第二种是RC5-CBC,这是RC5块的密码链接模式。它可以处理长度是RC5块尺寸倍数的消息。第三种是RC5-CBC-Pad,处理任何长度的明文。虽然密文将比明文长,但长度最多为RC5块。RC5-CTS密码是RC5加密算法的密文挪用模式,处理任何长度的明文,密文长度与明文长度相匹配。
RC5加密算法流程。
符号简介
参数变量
RC5是一种参数变量的分组算法,实际上是一种由三个参数确定的加密算法。特定的RC5可以表示为RC5-w/r/b。w.f和b的三个参数分别下表定义。
RC5字运算部件。
RC5由混合密钥生成过程、加密过程和解密过程三部分组成。在这两种算法中,有六个基本操作:
(1)2w加法运算,表示为+;
(2)模2w减法运算,表示为-;
(3)位异或运算,表示为\
(4)环左移,字循环左移b比特为a-5)环右移,字循环右移b比特为a>>>b。
运算过程
生成混合密钥的过程。
S[0]=Pw。
fori=1tot-1do。
S[i]=S[i-1]+Qw。
输入比特数大小为8,密钥长度为b的用户密钥K[0]至K[b-1]转换K[0]至K[b-1]为数组长度为c,比特数为w的L[]数组。
i=j=0x=y=0。
do3xmax(t,c)times:
S[i]=(S[]+x+y)modtl(i=s)
[j]=(L]+x+y)j=(x)
c=[b×8/w],方括号表示上取整运算,t=2r+2,当w分别为16.32.64时,常数Pw.Qw分别如下表所列:
RC5加密算法过程。
Input(A,B)
A=A+S(0)B=B+S[1]
fori=1tordo。
A=(A+B)
最初的A.B是要加密的两个比特数为w的数据,最后的A.B是加密的两个比特数为w的数据。
RC5解密算法过程。
Input(A,B)
fori=rdownto1do。
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的数据。
RC5加密算法安全分析。
RC5密码相对较新,因此评估评论仍在进行中。然而,密码的简单结构使其易于分析,并有望更容易地评估其强度。到目前为止,这些评论是有前途的。早期结果表明,12轮64位块大小的RC5将有足够的能力抵抗线性和差分密码分析。128位的块版本还没有像64位的块版本那样进行多次研究。但很明显,16轮是最小值。更大的安全性可以通过增加轮数来获得,其代价是减少密码的吞吐量。