RC4流密码的实现:
1、初始化S盒
2、利用密钥打乱S盒
3、生成伪随机密钥流
4、加解密
1、初始化S盒
-S盒是[0,255]->[0,255]的双射。
双射是指,从x域到y域,x与y一一对应,每个y必然被且被一个x指向。
-定义S盒:
unsigned char S[256]
-初始化S盒:
for i from 0 to 255
S[i]=i
2、利用密钥打乱S盒(keylength一般取[5,16]之间) key[i]是密钥
j=0
for i from 0 to 255
{
j=(j+S[i]+key[i mod keylength]) mod 256
交换S[i],S[j]}
交换是非线性操作
3、生成伪随机密钥流,假设明文长度为n
i=0,j=0
for t from 0 to n-1
{
i=(i+1) mod 256 ---1
j=(j+S[i]) mod 256 ---2
交换S[i],S[j] ---3
K=S[(S[i]+S[j]) mod 256] ---4
输出k}
其中1、2、3步骤的目的是置乱
3、4是非线性操作
RC4的优点:算法描述简单、实现容易快速、使用非线性结构、安全性高