基本原理

RC4属于对称密码算法中的流密码加密算法。
密钥长度可变,面向字节操作。
它以一个足够大的表S为基础,对表进行非线性变换,产生密钥流。

对称密码:加密与解密使用的是同一个密钥. 即明文和密钥异或生成密文,密文再和密钥异或可以还原明文.

流密码:逐个字节加密和它对应的就是块加密,也叫分组加密算法,例如DES加密算法

接下来我们来看看它是如何产生密钥流的呢?
它以一个足够大的表S为基础,对表进行非线性变换,产生密钥流。

加密过程

一、初始化S表

Step1:对S表进行线性填充,一般为256个字节;

Step2:用种子密钥填充另一个256字节的K表;

如果长度不够,则循环填充.

Step3:用K表对S表进行初始置换。

image-20211231151430669

二、密钥流的生成

(为每个待加密的字节生成一个伪随机数,用来异或)

image-20211231154015872

注:不同的密钥生成不同的S表,每一轮的表S都不同,表S一旦完成初始化,种子密钥就不再被使用。