RC4算法简介
RC4是由Rivest于1987年设计的一种序列密码,被广泛应用于Windows和无线通信系统等;
RC4是一种基于字节的序列的非移位寄存器序列,输出字节流;
RC4使用了一个28字节大小的非线性数据表(简称S表);S表的值S0, S1, …, S255是数字0到255的一个排列。对S表进行非线性变换,得到密钥流;
RC4支持不同密钥长度,美国政府规定用于出口的密钥长度不得超过40位。
RC4算法简单、高效,特别适合软件实现,加密速度比DES大约快10倍
在WLAN的WEP协议中,支持 64 位和128 位加密,由于密钥是5或13个ASCII 字符,64 位加密有时称为 40 位加密;128 位加密有时称为 104 位加密。其中的24bit由初始化向量填充,但因为初始向量太短而不安全,若正确使用密钥,则RC4依然安全
RC4算法原理
RC4对S表的初始化算法: 两个计数器I和J,I=0,J=0
- 对S表进行线性填充:SI=I, 0 ≤I<255
- 用密钥填充另一个256字节的数组K,如果密钥长度小于256字节,则依次重复填充,直至填满这个数组, K0, K1, …, K255
- 对于I=0到255重复以下步骤:
(1) J=J+SI+KI mod 256
(2) 交换SI和SJ
S表的开始256个状态舍弃则更安全
RC4输出密钥流字节z的算法
- I=0,J=0