RC系列算法在加密算法界有着较高的地位,原因也很简单,因为它们都足够优秀,下面我们就来了解一下RC系列算法中的RC4加密算法。
RC4加密算法简介
RC4算法也称“Rivest Cipher 4”,它是由“RSA三人组”中的Ron Rivest在1987年设计的密钥长度可变的流加密算法簇。之所以称其为“簇”,是由于其核心部分的S-box长度可为任意,但一般为256字节。
RC4 流密码是使用最广泛的流密码之一,它通过算法一次一个字节地加密消息,简单并且操作速度快,速度可以达到DES加密的10倍左右。
RC4加密算法的加密原理
在介绍RC4算法原理之前,我们需要先看看算法史的几个关键变量:
- 密钥流:Rc4算法的关键是根据明文和密钥生成相应的密钥流,密钥流的长度和明文的长度是对应的,也就是说明文的长度是500字节,那么密钥流也是500字节。当然,加密生成的密文也是500字节,因为密文第i字节=明文第i存节^密钥流第i字节;
- 状态向量S:长度为256,S[0],S[1]....S[255]。每个单元都是一个字节,算法运行的任何时候,S都包括0-255的8比特数的排列组合,只不过值的位置发生了变换;
- 临时向量T:长度也为256,每个单元也是一个字节。如果密钥的长度是256字节,就直接把密钥的值赋给T,否则,轮转地将密钥的每个字节赋给T;
- 密钥K:长度为1-256字节,注意密钥的长度keylen与明文长度、密钥流的长度没有必然关系,通常密钥的长度为16字节(128比特)。
加密过程
第一步:先初始化状态向量S(256个字节,用来作为密钥流生成的种子1)按照升序,给每个字节赋值0,1,2,3,4,5,6...254,255。
第二步:初始密钥(由用户输入),长度任意,如果输入长度小于256个字节,则进行轮转,直到填满。
例如输入密钥的是1,2,3,4,5,那么填入的是1,2,3,4,5,1,2,3,4,5,1,2,3,4,5...由上述轮转过程得到256个字节的向量T(用来作为密钥流生成的种子2)。
第三步:开始对状态向量S进行置换操作(用来打乱初始种子1)按照下列规则进行:
从第零个字节开始,执行256次,保证每个字节都得到处理,这样处理后的状态向量S几乎是带有一定的随机性了。
第四步:密钥流的生成与加密,为每个待加密的字节生成一个伪随机数,用来和明文进行异或,从而进行加密。加密中,将K的值与明文的下一字节异或,解密时将K的值与密文的下一字节异或。
RC4加密算法的优缺点
RC4算法具有实现简单,加密速度快,对硬件资源消耗费用低等优点,还可以防御暴力破解,使其跻身于轻量级加密算法的行列。
但在使用优先等效保密规则的无线网络中,在特定的情况下,可以在RC4算法加密的过程获取密钥,这样意味着RC4算法有可能对无线通信网络安全造成威胁。
免责声明:素材源于网络,如有侵权,请联系删稿。