RC5(Rivest Cipher 5)是一种对称密钥加密算法,由 Ron Rivest 于 1994 年设计。它是一种分组加密算法,可以处理可变长度的数据块。RC5 算法的密钥长度、数据块长度和轮数都是可变的,可以根据需求进行调整。
RC5 算法的核心思想是通过轮函数和密钥扩展来实现加密和解密操作。它采用了分组密码的结构,每次处理一个固定长度的数据块。
在加密过程中,RC5 算法使用了一个变长的轮密钥,通过密钥扩展算法将用户提供的密钥转化为轮密钥。然后,通过多轮的轮函数对数据进行加密。每一轮的轮函数包括数据的置换、混淆和扩散操作,以增加加密的强度。
解密过程与加密过程相反,使用相同的轮密钥和轮函数进行逆向操作,以还原原始数据。
填充模式
- None:不填充
- PKCS7:填充字符串由一个字节序列组成,每个字节填充该字节序列的长度
- Zeros:填充字符串由设置为零的字节组成
- ANSIX923:填充字符串由一个字节序列组成,此字节序列的最后一个字节填充字节序列的长度,其余字节均填充数字零
- ISO10126:填充字符串由一个字节序列组成,此字节序列的最后一个字节填充字节序列的长度,其余字节填充随机数据
分组对称加密算法有些运算模式要求明文数据的字节长度必须是其块大小的整倍数,因此在加密明文数据之前我们必须对明文数据进行填充。