Ron Rivest这个人之前在我们的文章中多次出现,他除了是RC系列算法的发明者之外,还是RSA算法中的“R”。今天我们就来了解一下由他设计的对称分组加密算法——RC5加密算法。

RC5加密算法简介

RC5算法是1994年设计发明的,是一种比较“年轻”的对称加密算法,它只使用了异或和位移等原始的运算,轮数可变,密钥位数可变,因此相对来说更加简单、快速。

对于RC5来说,其中有3个可变参数,分别为w/r/b。这里w是字长其值可以是16、32或64对于不同的字长明文和密文块的分组长度为2w位,r是加密轮数,b是密钥字节长度。

RC5加密算法

RC5加密算法的加密流程

假设输入明文块的长度为64位,在一次性初始操作中,输入明文块分成两个32位块A和B,前两个子密钥S[0]和S[1]分别加进A和B,分别产生C和D,表示一次性操作结束。

然后开始各轮,每一轮完成系列操作:

  1. 位异或运算;
  2. 循环左移;
  3. 对C和D增加下一个子密钥,先是加法运算,然后将结果用2的w次方求模(由于这里w=32,因此为2³² )。

RC5加密算法

从上图可以看出,初始操作有两步,然后是几轮操作,轮数可以取0~255。也可以从中看出,一个块的输出是另一个块的输入,使整个逻辑很难破译。

RC5加密算法的解密流程

RC5的解密流程基本与加密流程相反,将加密时的循环左移变成循环右移即可。

RC5加密算法的优缺点

RC5加密算法在RSA试验室中的表现相当不错,加之其简单、快速的特性,执行所需的内存更少,目前来看算得上是一个比较不错的算法。但是,由于RC5属于对称加密算法,这就始终无法摆脱对称加密算法的缺点。

免责声明:素材源于网络,如有侵权,请联系删稿。