RC4是一种面向字节的流密码,其中明文的一个字节(8bit)与一个密钥的字节进行异或生成一个密文的字节。
RC4是基于状态的,用S[0] S[1] .. S[255]表示,每个S表单元用一个字节表示。S中随机取出一个字节作为加解密密钥。
RC4算法实现:
1、S和T的初始化 :将状态S的初始值设置为0、1、...、255,创建一个序列T[0]、T[1]、...、T[255],将密钥K循环填充到T
2、S的初始置换 :选出j,j = (j + S[i] + T[i]) mod 256,置换S[i]和S[j]
3、密钥流的生成:
i = (i + 1) mod 256
j = (j + S[i]) mod 256
置换S[i],S[j]
k = S[(S[i] + S[j]) mod 256]
4、加密
C = P 异或 k
5、解密
P = C 异或 k