1.introduction
RC2是一种传统的私钥块加密算法,曾经被考虑作为DES算法的替代品。输入和输出块大小都是64bits。而密钥是可变的,从1byte到128bytes,现在常用的是8字节。
1.1Algorithm description
字:16比特位;‘+’:加;‘&’:表示比特敏感的与操作;‘XOR’:表示比特敏感的与或操作;‘~’:表示换位补码;‘^’:表示取幂运算;
2.key expansion(密钥扩展)
对于字操作,将规定缓存位置K[0],…,K[63];each K[i] is a 16 bit word
对于比特位操作,将规定缓存位置L[0],…,L[127];each L[i] is an eight-bit字节。
转换公式:K[i] = L[2*i] + 256*L[2*i+1].
密钥扩张的目的就是根据提供的密钥将其扩张成要求的密钥长度。
3.Encryption algorithm(加密算法)
主要是两个操作,mix和mash操作。’x rol k’表示16比特位左转k位,高位补低位。
3.1 Mix up R[i]
3.2 Mixing round
3.3 Mash R[i]
3.4 Mashing round
3.5 Encryption operation
4.Decryption algorithm(解密算法)
4.1 R-Mix up R[i]
4.2 R-Mixing round
4.3 R-Mash R[i]
4.4 R-Mashing round
4.5 Decryption operation
参考文献:RFC 2268