RC4密码简介:
RC4是由美国密码学家Ron Rivest在1987年设计的流密码算法,该算法被广泛用于 SSL/TLS协议(Socket Secure Layer, SSL)/(Transport Layer Security, TLS),WEP(Wired Equivalent Privacy, WEP)协议和 WPA(Wi-Fi Protected Access, WPA)协议,也作为蜂窝数字数据包规范的一部分。
RC4是一种基于非线性变换的流密码算法。该算法包括两部分:
(1)密钥编制算法KSA(Key Sehedule Algorithm); 用可变长度的密钥产生密钥流生成器的初始状态 S 0 S_0 S0。
(2)伪随机序列生成算法 PRGA(Pseudo Random Generation Algorithm);根据初始状态 S 0 S_0 S0产生密钥流序列,最终与明文相异或产生密文。
RC4的实现步骤:
部分1 KSA实现步骤:
- 随机选取一个密钥Key,初始化 S 盒。
- i t i_t it遍历 S 盒中的每一个位置, i t i_t it的每一次更新都会使得 j t j_t jt 在 S t − 1 S_{t-1} St−1 [ i t i_t it] 和Key的作用下产生一个新值。
- 交换 S t S_t St中 j t j_t jt和 i t i_t it对应的两个字节。经过N步遍历后KSA产生了RC4的初始状态 s 0 s_0 s0。RC4的密钥。
伪代码实现:
KSA(Key, S)
for i = 0 to N-1
i 0 i_0 i0 = 0, j 0 j_0 j0 = 0;
where t = 1,2,…,N
j t j_t jt = j t − 1 j_{t-1} j