目录
(1)RC5密钥扩展算法
(2)RC5加密算法
(3)RC5解密算法
RC5分组加密算法
RC5分组密码算法是1994年RSA实验室的RonaldL.Rivest教授发明的。它是参数可变的分组密码算法,三个可变的参数是:分组大小、密钥大小和加密轮数。在此算法中使用了三种运算:异或、模加和循环移位。RC5算法有一个面向字的结构:RC5-w/r/b,这里w是字长其值可以是16、32或64对于不同的字长明文和密文块的分组长度为2w位,r是加密轮数,b是密钥字节长度。Rivest推荐的RC5安全版本是RC5-32/12/16。
RC5算法的核心设计思想是简单而高效,主要使用了加、异或、移位等基本运算。其加密和解密过程都依赖于轮密钥和位运算,具体步骤如下:
(1)RC5密钥扩展算法
输入8bit,长度为b的用户密钥K[0],k[1],⋯⋯K[b-1],转换K[0],k[1],⋯⋯K[b-1]为数组长度为c,比特数为w的数组L[0],L[1],⋯⋯L[c-1]。
密钥数组L与初始数组S随后将混合,以产生最终的子密钥数组,S在混合时,较大的数组要进行三轮操作,对较小的数组则可能操作更多次,如下图所示:
其中:
Pw=Odd[(e-2)2w]其中e=2.718281828459⋯⋯(自然对数底)
Qw=Odd[(Ф-1)2w]其中Ф=1.618033988749⋯⋯⋯(黄金分割比)
(2)RC5加密算法
其中初始的A、B分别为要加密的两个比特数为w的数据,最终的A、B分别为加密好的两个比特数为w的数据。