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字运算部件
RC5由三部分组成,分别为混合密钥生成过程、加密过程和解密过程。在这两种算法中,共使用了六种基本运算:
(1) 2w加法运算,表示为“+”;
(2)模2w减法运算,表示为“-”;
(3) 位异或运算,表示为∧;
(4)环左移,字a循环左移b比特表示为“a<<<b”;
(5) 环右移,字a循环右移b比特表示为“a>>>b”。

运算过程
混合密钥生成过程
S[0]=Pw
for i=1to t-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[i]+x+y)<<<3;X=S[i];i=(i+1)mod tL
[j]=(L[j]+x+y)<<<(x,y);X=L[j];j=(j+1)mod C
其中c=[b×8/w],方括号表示上取整运算,t=2r+2,当w分别为16、32、64时,常数Pw、Qw分别如下表所列:
RC5加密算法简介及其安全性分析

RC5加密算法过程
Input(A,B)
A=A+S(0)B=B+S[1]
for i=1to r do
A=((A+B)<<<B)+S[2i]
B=((B+A)<<<A)+S[2i+1]
Output(A,B)
其中初始的A、B分别为要加密的两个比特数为w的数据,最终的A、B分别为加密好的两个比特数为w的数据。

RC5解密算法过程
Input(A,B)
for i=r down to1do
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轮是一个合适的最小值。更大的安全可以通过增加轮数获得,其代价是减少密码的吞吐量。